「管理画面」タグアーカイブ

WordPressの記事投稿画面で、新規投稿時にタイトルの入力を必須にする WordPress BuddyPressカスタマイズメモ

WordPressログイン画面の「W」のロゴを他の画像に変え、リンク先、マウスホバーの文言変更

WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。

WordPressに慣れていない人が使うことも想定できるので、タイトルなしのまま新規投稿すると「タイトルなし」となり、ダサいので、タイトル入力を必須にしておこう。


 

functions.php へ記述

WordPressにはタイトルを必須にするような設定はない。

functions.phpに記述して、記事投稿画面にjavascriptで、タイトルが記入されてない時にアラートを出すようにする。

//記事投稿タイトル必須

function required_title() {
?>
<script type="text/javascript">
jQuery(document).ready(function($){
if('post' == $('#post_type').val()){
$("#post").submit(function(e){
  if('' == $('#title').val()) {
  alert('タイトルを入力してください');
  $('#ajax-loading').css('visibility', 'hidden');
  $('#publish').removeClass('button-primary-disabled');
  $('#title').focus();
  return false;
  }
});}});
</script>
<?php
}
add_action('admin_head-post-new.php', 'required_title');
add_action('admin_head-post.php', 'required_title');

この例では、新規投稿、投稿の編集でタイトルの入力を必須にしている。

同様に、固定ページ用でもタイトル入力が必須になる。

管理画面でだけ適用するCSSファイルを作って、子テーマ化する WordPress BuddyPressカスタマイズメモ

WordPressの管理画面でだけCSSファイルを読み込ませる方法

 
WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになるので、管理画面の配置や色を変更したい場合、非表示したいものなどがある場合に、スタイルシートを使いたい場合もあるだろう。

色々と方法はあるが、今回は外部CSSファイルを子テーマに入れて、管理画面で読み込ませる方法を紹介。


 

functions.php へ記述

//adminのCSSを子テーマに追加

function load_custom_wp_admin_style() {
	wp_enqueue_style( 'custom_wp_admin_css', get_stylesheet_directory_uri() . '/css/adminstyle.css', false, '1.0.0' );
}
add_action( 'admin_enqueue_scripts', 'load_custom_wp_admin_style' );

スタイルシートのパス

get_stylesheet_directory_uri()

この部分で、子テーマフォルダへのパスを表している。
スタイルシート名は、ここでは admin-style.css だ。

WordPress BuddyPressカスタマイズメモ 管理画面のサブメニューの非表示。管理者以外

管理者以外は、プラグイン、ユーザーなどのサブメニューを非表示にする

WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。

管理者以外の、編集者や投稿者には、非表示にしておきたいメニューがある。

管理画面の一部のメニューを非表示にするで、メニューごと非表示にする方法は商会した。

今回はサブメニューだけを非表示にする方法。

functions.php へ記述

//管理画面のサブメニューの非表示(管理者以外)

if (!current_user_can('administrator')) {
function remove_submenus() {
// remove_submenu_page('index.php', 'index.php'); // ダッシュボード -> ホーム
// remove_submenu_page('index.php', 'update-core.php'); // ダッシュボード -> 更新
// remove_submenu_page('edit.php', 'edit.php'); // 投稿 -> 投稿一覧
// remove_submenu_page('edit.php', 'post-new.php'); // 投稿 -> 新規追加
// remove_submenu_page('edit.php', 'edit-tags.php?taxonomy=category'); // 投稿 -> カテゴリ
// remove_submenu_page('edit.php', 'edit-tags.php?taxonomy=post_tag'); // 投稿 -> タグ
// remove_submenu_page('upload.php', 'upload.php'); // メディア -> ライブラリ
// remove_submenu_page('upload.php', 'media-new.php'); // メディア -> 新規追加
// remove_submenu_page('link-manager.php', 'link-manager.php'); // リンク -> すべてのリンク
// remove_submenu_page('link-manager.php', 'link-add.php'); // リンク -> 新規追加
// remove_submenu_page('link-manager.php', 'edit-tags.php?taxonomy=link_category'); // リンク -> リンクカテゴリー
// remove_submenu_page('edit.php?post_type=page', 'edit.php?post_type=page'); // 固定ページ -> 固定ページ一覧
// remove_submenu_page('edit.php?post_type=page', 'post-new.php?post_type=page'); // 固定ページ -> 新規追加
// remove_submenu_page('themes.php', 'themes.php'); // 外観 -> テーマ
// remove_submenu_page('themes.php', 'widgets.php'); // 外観 -> ウィジェット
// remove_submenu_page('themes.php', 'theme-editor.php'); // 外観 -> テーマ編集
// remove_submenu_page('plugins.php', 'plugins.php'); // プラグイン -> インストール済みプラグイン
// remove_submenu_page('plugins.php', 'plugin-install.php'); // プラグイン -> 新規追加
// remove_submenu_page('plugins.php', 'plugin-editor.php'); // プラグイン -> プラグイン編集
// remove_submenu_page('users.php', 'users.php'); // ユーザー -> ユーザー一覧
// remove_submenu_page('users.php', 'user-new.php'); // ユーザー -> 新規追加
// remove_submenu_page('users.php', 'profile.php'); // ユーザー -> プロフィール
// remove_submenu_page('tools.php', 'tools.php'); // ツール -> 利用可能なツール
// remove_submenu_page('tools.php', 'import.php'); // ツール -> インポート
// remove_submenu_page('tools.php', 'export.php'); // ツール -> エクスポート
// remove_submenu_page('options-general.php', 'options-general.php'); // 設定 -> 一般
// remove_submenu_page('options-general.php', 'options-writing.php'); // 設定 -> 投稿設定
// remove_submenu_page('options-general.php', 'options-reading.php'); // 設定 -> 表示設定
// remove_submenu_page('options-general.php', 'options-discussion.php'); // 設定 -> ディスカッション
// remove_submenu_page('options-general.php', 'options-media.php'); // 設定 -> メディア
// remove_submenu_page('options-general.php', 'options-privacy.php'); // 設定 -> プライバシー
// remove_submenu_page('options-general.php', 'options-permalink.php'); // 設定 -> パーマリンク設定
}
add_action('admin_menu', 'remove_submenus', 102);
}

「//」を頭につけると、コメントアウトなので、メニューからは削除されない。

上の例でいくと、「ユーザー一覧」を非表示にしたいなら、

// remove_submenu_page('users.php', 'users.php'); // ユーザー -> ユーザー一覧

  ↓

 remove_submenu_page('users.php', 'users.php'); // ユーザー -> ユーザー一覧

と、頭の//を削除すればいい。

“管理者”でもメニューを削除したい場合は、一番上と一番下の

if (!current_user_can('administrator')) {

}

を削除すればいい。

 

メニューを非表示にしている場合は、サブメニューも強制非表示

例えば、メニューの「ユーザー」を

remove_menu_page('users.php');

で非表示にしている場合は、

remove_submenu_page('users.php', 'users.php');
remove_submenu_page('users.php', 'user-new.php');
remove_submenu_page('users.php', 'profile.php');

と書いていなくても、

「ユーザー」のサブメニューである
ユーザー -> ユーザー一覧
ユーザー -> 新規追加
ユーザー -> プロフィール

の3個は強制的に非表示になる。

プラグインなどで勝手に追加されるメニューのIDを調べる方法

functions.phpへ

function check_post_label_id() {
    global $menu;
    global $submenu;

    var_dump($menu);
    var_dump($submenu);
}
add_action( 'admin_menu', 'check_post_label_id' );

これを書いて、ページ(ソース)を見ると

array(数字) {[0]->string(数字)"メニューの単語"[1]=>string(数字)"スラッグ"......}

って感じの文字の羅列が見えるので、

“メニューの単語” の前にある array(数字)数字が”メニューの単語”のIDになっている。