ワードプレスでカスタム投稿の一覧テーブルに列を追加してその列に各カスタム投稿のカスタムフィールドの値を表示し、その値で並び替えをする方法を解説いたします。
カスタム投稿の一覧テーブルに列を追加してその列に各カスタム投稿のカスタムフィールドの値を表示し、その値で並び替えをするPHPコード
早速PHPコードを見ていきましょう。このコードはテーマのfunctions.phpや作成中のプラグイン等にコピペいただくと動作します。
$cutomposttype_slug = "books"; //カスタム投稿タイプのスラグ global $column_name; $column_name = "アクセス数"; //任意のカラム名 global $column_slug; $column_slug = "my_cuctom_column"; //任意のカラム名のスラグ global $postmeta_key; $postmeta_key = "my_sort_value_metakey"; //カスタム投稿一覧に表示して並べ替えるカスタムフィールドのキー add_filter( 'manage_edit-'.$cutomposttype_slug.'_columns', 'new_column' ); function new_column( $columns ) { global $column_slug; global $column_name; return array_merge($columns, array( $column_slug => $column_name )); } add_filter( 'manage_edit-'.$cutomposttype_slug.'_sortable_columns', 'register_sortable_columns' ); function register_sortable_columns( $columns ) { global $column_slug; $columns[$column_slug] = $column_slug; return $columns; } add_action( 'manage_'.$cutomposttype_slug.'_posts_custom_column' , 'custom_columns', 10, 2 ); function custom_columns( $column, $post_id ) { global $column_slug; global $postmeta_key; switch ( $column ) { case $column_slug: echo get_post_meta( $post_id, $postmeta_key, true ); break; } } add_filter( 'request', 'views_columns_orderby' ); function views_columns_orderby( $vars ) { global $column_slug; global $postmeta_key; if ( isset( $vars['orderby'] ) && $column_slug === $vars['orderby'] ) { $vars = array_merge( $vars, array( 'meta_key' => $postmeta_key, 'orderby' => 'meta_value_num', ) ); } return $vars; }
編集する行は4つです。
$cutomposttype_slug = “books”; カスタム投稿タイプのスラグを指定します。postにするとワードプレスのデフォルトの投稿の一覧になります。
$column_name = “アクセス数”; 任意のカラム名(カスタム投稿一覧に追加する列名)を指定してください。
$column_slug = “my_cuctom_column”; 任意のカラム名(カスタム投稿一覧に追加する列名)のスラグを決めて半角英数で入力してください。(そのままでも問題ございません)
$postmeta_key = “my_sort_value_metakey”; カスタム投稿一覧のテーブルに表示して並べ替える各投稿のカスタムフィールドのキーを指定します。
コードの流れの解説
‘manage_edit-カスタム投稿タイプのスラグ_columns’ フィルターで任意のカスタム投稿タイプの一覧画面のテーブルに列を追加することができます。
‘manage_edit-カスタム投稿タイプのスラグ_sortable_columns’ フィルタで上記列を並び替え可能な列にします。
add_action( ‘manage_カスタム投稿タイプのスラグ_posts_custom_column’アクションで、そのカラムのデータ取得の場面で、get_post_meta でカスタムフィールドの値を取得しています。
add_filter( ‘request’, ‘views_columns_orderby’ );で並び替えを実施するコードを実行します。
コードの中身の
'meta_key' => カスタムフィールドのキー, 'orderby' => 'meta_value_num',
でソートしています。
ご参考になりましたら幸いです。
WordPress ワードプレスのテーマやプラグインのコーディングのご依頼・ご相談はWPドクターまでお気軽にお送りください