2022年02月01日
管理画面の投稿のカスタマイズ事例
WordPressのデフォルトの投稿画面には下記の様な問題点があります。
■スラッグ名が表示されない
■更新日が表示されない
そこで管理画面の投稿画面のカスタマイズ事例を解説します。
尚、全体像は下記ドキュメントを参照して下さい。
1.投稿メニュの名称変更
デフォルトでは「投稿」、「投稿一覧」、「新規追加」という名前が使われています。
これを「ブログ」、「ブログ一覧」、「新規ブログ追加」に変更するには、、アクションフック:admin_menuを利用します。
functions.phpに下記を追加します。
/* 投稿の名称変更 */ function pots_name() { global $menu,$submenu; $menu[5][0] = 'ブログ'; $submenu['edit.php'][5][0] = 'ブログ一覧'; $submenu['edit.php'][10][0] = '新規ブログ作成'; } add_action( 'admin_menu', 'pots_name' );
■4行目
$menu[5][0] = 'ブログ';
上記で[投稿]が[ブログ]に変更されます。
■5行目
$submenu['edit.php'][5][0] = 'ブログ一覧';
上記で[投稿一覧]が[ブログ一覧]に変更されます。
■6行目
$submenu['edit.php'][10][0] = '新規ブログ作成';
上記で[新規追加]が[新規ブログ作成]に変更されます。
2.投稿一覧画面のデザイン変更
投稿ページ一覧の
・デザインを変更:[フィルターフック:manage_posts_columns]
・新設カラムのデータ取り込み:[アクション・フック:manage_posts_custom_column]
を利用します。
functions.phpに下記を追加します。
/* 投稿の表示項目とデザイン */ function posts_design($columns) { $columns = array( 'cb' => '<input type="checkbox" />', 'title' => 'タイトル', 'slug' => 'スラッグ', //新規に追加 'categories' => 'カテゴリ', 'tags' => 'タグ', 'date' => '日時', 'modified' => '最終修正日', //新規に追加 'author' => '作成者', 'comments' => '<div class="comment-grey-bubble" title="コメント"></div>',); echo '<style> .fixed .column-title {width:30%;} .fixed .column-slug {width:20%;} .fixed .column-categories {width:13%;} .fixed .column-tags {width:13%;} .fixed .column-date {width:10%;} .fixed .column-modified {width:10%;} .fixed .column-comments {width:4%;} </style>'; return $columns; } add_filter('manage_posts_columns', 'posts_design',10,1); /* 新設フィードへのデータの読み込み */ function posts_data_add($column_name, $post_id) { $post = get_post($post_id); if($column_name == 'slug') { $slug = $post->post_name; echo esc_html($slug);} else if($column_name == 'modified'){ echo the_modified_date();} } add_action( 'manage_posts_custom_column', 'posts_data_add', 10, 2 );
■25行目:カラムデザイン
add_filter('manage_posts_columns', '関数名',10,1);
始めの10は優先順位、次の1は関数のパラメータの数を指定している。
■36行目:新規カラムデータの取り込み
add_action( 'manage_posts_custom_column', '関数名',10,2);
始めの10は優先順位、次の2は関数のパラメータの数を指定している。
この関数の中で新規カラムにデータを取り込んでいる。