WordPressでWEBサイトを作る際に特定のページを作成するために固定ページのテンプレートを作成したりする事があります。
ただテンプレートの選択やページのURLの指定はWordPressの管理画面から行うので、テスト環境と本番環境があるような場合、本番環境でテンプレートが選択できてなかったとか、URL(スラッグ)がテスト環境と同じに設定できてなかったという事故が起こりかねません。
これらが固定ページ一覧のリスト上に表示できれば、ミスがあっても早期発見して修正できるように思います。
固定ページ一覧に表示する要素を変更する
管理画面の一覧ページに表示するカラムのカスタマイズは、manage_{$post_type}_posts_columns
フィルターを使います。
(WordPress3.1以前では `manage_edit-{$post_type}_columns
フィルター)
今回は固定ページなのでフィルターは manage_page_posts_columns
となります。
<?php // function.php // 固定ページ一覧に表示するカラムの変更 add_filter('manage_page_posts_columns', 'my_manage_page_columns'); function my_manage_page_columns( $columns ) { // 表示する順序を変えたいので一度 unset でデフォルトのカラムを外す unset($columns['date']); unset($columns['author']); unset($columns['comments']); // slug と template を表示する カラムを追加 $columns['slug'] = __('Slug'); $columns['template'] = __('Template'); // unset したカラムで必要なものを戻す $columns['author'] = __('Author'); $columns['date'] = __('Date'); return $columns; }
これで管理画面の固定ページ一覧に スラッグ と テンプレート のカラムがたされた状態になります。
見出しを変更したい場合は、__('Slug')
の部分を "URL"
などの表示したい文字に変えればOK。
管理画面 固定ページ 一覧の表示のカスタマイズ
カラムに表示するもののカスタマイズは manage_{$post_type}_posts_custom_column
フィルターを使います。
カスタム投稿タイプなら manage_posts_custom_column
とすれば投稿とカスタム投稿タイプを一括で設定できるのですが、固定ページはこのフィルターでは動作しません。
固定ページは manage_pages_custom_column
というフィルターになります。
function.php に固定ページ一覧の表示をカスタマイズするコードを追加します。
<?php // function.php // 固定ページ一覧の表示をカスタマイズ add_action('manage_pages_custom_column', 'my_pages_custom_column', 10, 2); function my_pages_custom_column( $column_name, $post_id ) { // Slug if( $column_name === 'slug' ) { $column = get_post_field('post_name', $post_id, 'display'); } // Template Name if( $column_name === 'template' ) { $column = get_page_template_slug($post_id); // または // $column = get_post_meta( $post_id, '_wp_page_template', true ); } if( isset($column) && ( $column || $column === 0 ) ) { echo $column; } else { echo __('None'); } }
👇
□タイトル | スラッグ | テンプレート | 作成者 | 日時 |
---|---|---|---|---|
□ HOME - フロントページ | home | page-home.php | KiKiKi | 公開済み 2017年7月1日 |
□ About | about | page-about.php | KiKiKi | 公開済み 2017年7月1日 |
□ サンプルページ | sample-page | なし | KiKiKi | 公開済み 2017年6月30日 |
□ Blog - 投稿ページ | blog | なし | KiKiKi | 公開済み 2017年6月30日 |
こんな感じに管理画面の固定ページ一覧にページのURL(Slug)と使用しているテンプレートファイル名を表示する事ができました。
固定ページのテンプレートの取得に関して
固定ページのテンプレート名は get_page_template_slug( $post_id )
で取得することができます。
ただし、特にテンプレートを設定していないデフォルトの場合 get_page_template_slug()
はNULL
を返します。
get_post_meta( $post_id, '_wp_page_template', true );
でもテンプレート名を取得することができ、こちらの場合、テンプレートが設定されていない場合は default
という文字列が返ります。
上の例では、最後に$column
が空なら__('None')
を返し「なし」と表示するようにしていますが、default
と表示させたい場合は get_post_meta( $post_id, '_wp_page_template', true );
を使うのが良いと思います。
Function Reference/get page template slug
The function
get_page_template_slug()
returns an empty string when the value of ‘_wp_page_template’ is either empty or'default'
.Custom fields starting with an underscore do not display in the Edit screen’s Custom Fields module. To retrieve a Page’s custom template metadata, you can also use:
get_post_meta( $post->ID, ‘_wp_page_template’, true )出典: Function Reference/get page template slug « WordPress Codex
[参考]
- 管理画面一覧のカラムの変更関連
- 管理画面一覧の表示のカスタマイズ関連
- 固定ページのテンプレート名取得
WordPressユーザーのためのPHP入門 はじめから、ていねいに。[第2版]
- 作者: 水野史土
- 出版社/メーカー: エムディエヌコーポレーション(MdN)
- 発売日: 2017/03/28
- メディア: Kindle版
- この商品を含むブログを見る