WordPressの投稿一覧は初期状態のままでは欲しい情報が見れないことが多々ありあす。
投稿編集画面に表示できるものならばなんでも表示出来ますが、今回はスラッグを投稿一覧画面に表示させてみようと思います。
プログラムを触るため少しレベルは高いですが、実際やってみるとすぐです。
スラッグを一覧に表示させる修正方法
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// カスタムフィールドの項目を一覧画面に表示させる function add_posts_columns($columns) { $columns['slug'] = "スラッグ"; return $columns; } function add_column_val($column_name, $post_id) { if( $column_name == 'slug' ) { $slug = get_post($post_id)->post_name; echo $slug } } add_filter( 'manage_posts_columns', 'add_posts_columns' ); add_action( 'manage_posts_custom_column', 'add_column_val', 10, 2 ); |
?> が無ければそのまま一番したに追加すればOKです。
?> は、<?php と ?> で挟まれた間はPHPのコードです。という決まりごとです。
function.php って何?
このプログラムはどういう意味?って方は次に解説します。
function.phpとは
function.php とは、WordPressのテーマ独自の関数(function)をまとめたファイルで、PHPというプログラミング言語で書かれています。
WPインストールディレクトリ/wp-content/themes/あなたのテーマ/function.php ←ここにあります。
テーマに関するプログラムは、WordPress管理画面から編集することも可能です。
サイドメニューより、「外観」→「テーマ編集」を開きます。
画面右のテーマファイルより、「テーマのための関数(function.php)」をクリックします。
この画面に上で紹介した関数を追加し「ファイルを更新」ボタンを押せば反映されます。
ただし、ちょっと間違えるとWordPressが動かなくなる可能性もありますのでご注意ください。
修正内容の解説
1 2 3 4 |
function add_posts_columns($columns) { $columns['slug'] = "スラッグ"; return $columns; } |
引数の $columns は配列になっているので、キーの部分に、「slug」のように英語名前を入れ、値の部分に「スラッグ」のように実際に表示される日本語名を入れます。
スラッグ以外に何か表示したい項目を増やしたい場合は、下のように追加していけばできます。
1 2 3 4 5 6 7 |
function add_posts_columns($columns) { $columns['slug'] = "スラッグ"; $columns['nanika1'] = "何か1"; $columns['nanika2'] = "何か2"; $columns['nanika3'] = "何か3"; return $columns; } |
ここで疑問が出てきます。
投稿と固定ページや、自分で追加した場合は他にも投稿タイプがあるが、どうして投稿にだけ反映されるのだろう?
それは、下2行のうちの下記コードで定義します。
1 |
add_filter( 'manage_posts_columns', 'add_posts_columns' ); |
投稿一覧の項目を定義する manage_posts_columns という処理があり、その時にあなたが定義した add_posts_columns も実行します。という内容です。
これで投稿一覧のときにだけ反映されます。
次に、下記関数でその項目に表示する値を取得し表示ます。
1 2 3 4 5 6 |
function add_column_val($column_name, $post_id) { if( $column_name == 'slug' ) { $slug = get_post($post_id)->post_name; echo $slug } } |
この関数は、表示する項目数×一覧の件数 だけ実行されます。
なのでまず、2行目でif文を書いて、項目名が slug の場合だけに絞ります。
そして3行目でスラッグの値を取得し、4行目で出力しています。
そして、カラムの値を出力するときに呼び出される関数であることを下記コードで定義します。
1 |
add_action( 'manage_posts_custom_column', 'add_column_val', 10, 2 ); |
解説は出来るだけ丁寧に書いたつもりですが、何を言っているか分からない人もいるかもしれません。
その方はまずPHPについて勉強されたら良いと思います。
このブログでも今後PHPについて触れていこうと思っています。
まとめ
少し難しい内容でしたが、これで投稿一覧にスラッグを表示することが出来ます。
まだ不明点があればお気軽にご質問ください。
コメントを残す