Admin Columns を使った WordPress 管理画面のカスタム列カスタマイズ方法

WordPress の管理画面でカスタム投稿タイプを使用する際、特定の値をラベルに変換したり、IDを実際のデータに置き換えて表示したいことがあります。この記事では、Admin Columns プラグインの ac/column/value フィルターを使用して、カスタム列の値をカスタマイズする方法を解説します。

実装するカスタマイズ内容

  • 特定の値をラベルに変換: 例えば、alphaカテゴリA に変換。
  • 特定のカスタム投稿タイプと列のヘッダーラベルに応じて値を変更custom_post_type というカスタム投稿タイプの「項目名」列で、IDを実際のデータに変換して表示。

実装コード

以下のコードを functions.php に追加することで、管理画面のリスト表示をカスタマイズできます。

function cf_custom_column_value( $value, $id, $column ) {
    // カスタム投稿タイプを取得
    $r_post_type  = $column->get_post_type();
    
    // 列のヘッダーラベルを取得
    $column_label = $column->get_option('label');

    // 変換したい値と対応するラベルの配列
    $labels = array(
        'alpha' => 'カテゴリA',
        'beta'  => 'カテゴリB',
        'gamma' => 'カテゴリC',
        'status1' => '承認済み',
        'status2' => '保留',
    );

    // 配列内の値をラベルに変換
    if ( array_key_exists( $value, $labels ) ) {
        $value = $labels[ $value ];
    }

    // 特定のカスタム投稿タイプの「項目名」列の値を変換
    if ( $r_post_type == 'custom_post_type' && $column_label == '項目名' ) {
        $custom_value = get_post_meta( $value, 'custom_field', true );
        $value = $custom_value;
    }

    return $value;
}
add_filter( 'ac/column/value', 'cf_custom_column_value', 10, 3 );

コードの説明

  1. カスタム投稿タイプの取得$r_post_type = $column->get_post_type();
    • $column->get_post_type() を使って、現在表示されている投稿タイプを取得。
  2. 列のヘッダーラベルを取得$column_label = $column->get_option('label');
    • $column->get_option('label') を使用して、現在の列のラベル(表示名)を取得。
  3. 特定の値をラベルに変換$labels = array( 'alpha' => 'カテゴリA', 'beta' => 'カテゴリB', 'gamma' => 'カテゴリC', 'status1' => '承認済み', 'status2' => '保留', ); if ( array_key_exists( $value, $labels ) ) { $value = $labels[ $value ]; }
    • 配列 $labels に変換したいキーとラベルを設定。
    • array_key_exists() で値が配列内にあるか確認し、変換。
  4. カスタム投稿タイプ custom_post_type の「項目名」列の値を変換if ( $r_post_type == 'custom_post_type' && $column_label == '項目名' ) { $custom_value = get_post_meta( $value, 'custom_field', true ); $value = $custom_value; }
    • カスタム投稿タイプ custom_post_type で「項目名」列だった場合に実行。
    • $value が投稿 ID であるため、get_post_meta() でカスタムフィールド custom_field から実際のデータを取得して表示。

まとめ

この方法を使えば、カスタム投稿タイプや特定の列に応じて、表示を柔軟に変更できます。管理画面をより見やすくするために、ぜひ活用してみてください!

さらにカスタマイズを行う場合

  • get_value() を利用して他のカラムのデータを取得
  • 条件分岐を追加して、さらに細かくカスタマイズ

管理画面をより便利にするために、Admin Columns のフィルターを活用しましょう!

コメント

タイトルとURLをコピーしました