WordPressで投稿一覧ページにカスタムメタデータを表示する方法です。
下の画像のカテゴリーやタグなどと同様に、列の形で表示します。
目的
今回は、’my_meta’ というキー名のカスタムメタデータを表示します。列名は ‘マイメタ’ にします。
手順
簡単な様に見えて複雑で、次の4ステップを踏みます。
- manage_posts_columns フィルタで、新しいカスタム列を追加します。
- manage_posts_custom_column アクションで、カスタム列に値を入れます。
- manage_edit-post_sortable_columns フィルタで、カスタム列をソート対象に含めます。
- request フィルタでソートリクエストを調整します。
Step1. 新しい列を追加します
manage_posts_columns フィルタで、新しい列を追加します。
‘my_meta’ というキー名のメタデータを、’マイメタ’という列名表示で登録しました。
function my_manage_posts_columns( $columns ) {
$columns = array_merge( $columns, array(
'my_meta' => 'マイメタ'
));
return $columns;
}
add_filter( 'manage_posts_columns', 'my_manage_posts_columns' );
フィルタなのでreturnを忘れずに。
Step2. 作った列に値を入れます
manage_posts_custom_column アクションで、カスタム列に値を入れます。
作った列が表示される段階になったら、echo でカスタムメタデータを返してあげます。
function my_manage_posts_custom_column( $column_name, $post_id ) {
switch ( $column_name ) {
case 'my_meta':
echo get_post_meta( $post_id, 'my_meta', true );
break;
}
}
add_action( 'manage_posts_custom_column', 'my_manage_posts_custom_column', 10, 2 );
ここまでで、カスタムメタデータは投稿一覧画面に表示されます。
Step3. 作った列にソート対象に含めます。(オプショナル)
この段階では、作った列はソートができないはずです。ソートが不要なら以降は不要です。
manage_edit-post_sortable_columns フィルタで、カスタム列をソート対象に含めます。
‘my_meta’ キーを $sortable_columns に追加します。
function my_manage_edit_post_sortable_columns( $sortable_columns ) {
$sortable_columns = array_merge( $sortable_columns, array(
'my_meta' => 'my_meta'
));
return $sortable_columns;
}
add_filter( 'manage_edit-post_sortable_columns', 'my_manage_edit_post_sortable_columns' );
まだ、ソートはできません。次が最後です。
Step4. ソートリクエストを調整します。(オプショナル)
request フィルタでソートリクエストを調整します。
カスタムメタデータでソートするには、WP_Query()の’meta_key’と’orderby’オプションをカスタムメタデータ用に調整する必要があります。これは次のようにします。
function my_request( $vars ) {
if ( isset( $vars['orderby'] ) ) {
switch( $vars['orderby'] ) {
case 'my_meta':
$vars = array_merge( $vars, array(
'meta_key' => 'my_meta',
'orderby' => 'meta_value_num'
) );
break;
}
}
return $vars;
}
add_filter( 'request', 'my_request' );
‘meta_key’ にはカスタムメタキーを入れます。
‘orderby’ は、数字でソートするなら ‘meta_value_num’、文字列でソートするなら ‘meta_value’ となります。
終わりに
これで投稿一覧画面にソート可能なカスタムメタデータが表示されたかと思います。
参考サイト
- https://codex.wordpress.org/Plugin_API/Filter_Reference/manage_posts_columns
- https://qiita.com/gatespace/items/199c9995e47d668e0fb0
- https://office7f.com/2015/10/20/wordpress-taxonomy-filter/
長かったですが、以上です。