サポート » 使い方全般 » 管理画面「カスタム分類」テーブルのカスタマイズ

  • 解決済 Pineapplen

    (@pineapplen)


    『Advanced Custom Fields』を使用してカスタム分類(dkns_cat)に
    カスタムフィールド(dkns_cat_color)を追加し「色」を設定しています。
    公開している部分では設定したカテゴリーの色の情報を取得できていますが、
    管理画面「カスタム分類」編集画面のテーブルでも色の情報を表示したいです。

    下記のようなコードで色のセルを作成してアイコンフォントを表示するところまで
    来たのですが、【タームID】を取得することができません。

    【タームID】部分に数字で直接入力すると、ちゃんと、指定したタームの色で
    表示されるので、基本的には下記のコードで大丈夫なのだと思いますが…
    引数としてなにか渡してあげる、または、globalで取得する必要があるのだろうとは
    わかるのですが、どのように指定したらいいのかわかりません。
    何かアドバイスをお願いできないでしょうか。よろしくお願いします。

    function manage_dkns_cat_columns( $columns ) {
    	$columns['dkns_c_cat_color'] = "色";
    	return $columns;
    }
    add_filter( 'manage_edit-dkns_cat_columns', 'manage_dkns_cat_columns' );
    
    function add_dkns_cat_column() {
    	$color = esc_attr( get_field( 'dkns_cat_color', "dkns_cat_【タームID】" ) );
    	echo '<span style="color: ' . $color . '" class="dashicons dashicons-category"></span>';
    }
    add_filter( 'manage_dkns_cat_custom_column', 'add_dkns_cat_column', 'dkns_c_cat_color', $tag->term_id );

    WordPressのバージョン 4.0
    テーマ オリジナル
    カスタム分類の作成はプラグインを使用せずfunctions.phpにて作成しています

    上記のコードは、WordPress4.0 > wp-admin > includes > class-wp-terms-list-table.php 391行目からの部分などを参照しています。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • こんにちわ、Pineapplenさん。

    get_field の第 2 引数は post id ではないでしょうか?

    トピック投稿者 Pineapplen

    (@pineapplen)

    KUCKLUさん、ありがとうございます。

    説明が難しいのですが、
    「カスタム分類」に設定したカスタムフィールドを取得する場合、
    第2引数は、【カスタム分類名_タームID】で正解だと思うのですが…

    参考にしたのはこちらなどです。
    http://www.advancedcustomfields.com/resources/how-to-get-values-from-a-taxonomy-term/
    http://blog.makko.jp/2012/3508.html

    公開側では上記のページのように、表示したい投稿の情報から
    タームの情報を取得して、タームのIDを取り出す方法をとっていますが、
    管理画面のカテゴリー一覧のページでは特定の「post」の情報から、
    取り出すわけではないため詰まってしまっています。

    根本的に自分のPHPの知識が足りていないのはわかっているのですが….
    よろしくお願いいたします。

    モデレーター jim912

    (@jim912)

    まず、add_filterの記述が違います。

    add_filter( 'manage_dkns_cat_custom_column', 'add_dkns_cat_column', 'dkns_c_cat_color', $tag->term_id );

    と書かれていますが、add_filterの第3引数は優先度を整数で指定し、第4引数はフックした関数で受け取る引数の数を整数で記述します。

    manage_dkns_cat_custom_colum フックでは、表示する文字列、カラム名、タームIDの3つのデータを受け取れるようになっていて、今回は、タームのIDを受け取る必要があるため

    add_filter( 'manage_dkns_cat_custom_column', 'add_dkns_cat_column', 10, 3 );

    といった形になるはずです。

    add_dkns_cat_column 関数では、これら3つの引数を受け取って、処理を行えば大丈夫です。

    あと、いくつか注意点があって、

    1. カラム名で条件分岐を行わないと、他にもカラムが追加された場合、全てのカラムで出力が行われてしまいます。
    2. manage_dkns_cat_custom_column は、フィルターフックなので、echo ではなく、return で表示する html を return すべきです。
    トピック投稿者 Pineapplen

    (@pineapplen)

    jim912さん、ありがとうございます!

    できました!感激です。

    PHPの理解の問題というか、基本ですね。もっと勉強します。
    本当にありがとうございました。

    function manage_dkns_cat_columns( $columns ) {
    	$columns['dkns_c_cat_color'] = "色";
    	return $columns;
    }
    add_filter( 'manage_edit-dkns_cat_columns', 'manage_dkns_cat_columns' );
    
    function add_dkns_cat_column( $column, $column_name, $term_id ) {
    	if ( $column_name == 'sc_cat_color' ) {
    		$color  = esc_attr( get_field( 'dkns_cat_color', "dkns_cat_$term_id" ) );
    		$column = '<span style="color: ' . $color . '" class="dashicons dashicons-category"></span>';
    	}
    	return $column;
    }
    add_filter( 'manage_dkns_cat_custom_column', 'add_dkns_cat_column', 10, 3 )
    トピック投稿者 Pineapplen

    (@pineapplen)

    解決済みです。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「管理画面「カスタム分類」テーブルのカスタマイズ」には新たに返信することはできません。