web-dev-qa-db-ja.com

Edit-tags.phpメインページのカスタムカラム

私が作成したカスタム分類法のためにedit-tags.phpにカスタム列を追加しようとしています。このカスタム分類は機器タイプと呼ばれ、機器と呼ばれる1つのカスタム投稿タイプにのみ適用されます。私はedit.phpページにカスタムカラムを追加するのに使うのと同じフィルタとアクションを使おうとしています。私は実際にこのフィルタでカスタムカラムを作成することができました:

add_filter('manage_edit-equipment-types_columns', 'define_equip_types_columns');

ただし、これらの列にデータを入力することはできません。通常、edit.phpページでは次のようにします。

add_action('manage_posts_custom_column', 'my_post_type_columns_content'));

そしてmy_post_type_columns_content関数内で、ポストタイプに基づいて条件付きで列データを出力します。

問題は、タグの編集ページに似たようなフックが見つからないようです。 Adam Brownのウェブサイトはこれらのフックをリストします:

manage_blogs_custom_column

manage_comments_custom_column

manage_comments_nav

manage_link_custom_column

manage_media_custom_column

manage_media_media_column

manage_pages_custom_column

manage_plugins_custom_column

manage_posts_custom_column

manage_sites_custom_column

manage_themes_custom_column

manage_{$post->post_type}_posts_custom_column

どれも助けにならないと私は思います。誰もがこれを行う方法を知っていますか?私はとても親しいです、私はタイトルで作成された列を持っています、私はちょうどそれらをデータで埋める必要があります!

編集:明確にするために、私はカスタムフィールドを作ることを試みていません。分類法のメインページの右側にある表のカスタム列を作成しようとしています。

その投稿タイプのすべての投稿が表示されるedit.phpページでは、定期的に次のような数量列などのカスタム列を作成できます。

enter image description here

しかし、下のImage URLのようなカスタムカラムを作成することができても、edit-tags.phpメインページのカラムに値を設定するためのフックはないと思います。

enter image description here

5
IV4

これを行うには、 'taxonomy' _edit_formアクションとediting_'taxonomyアクションをフックします。

add_action('taxonomy_edit_form', 'foo_render_extra_fields');
function foo_render_extra_fields(){
    $term_id = $_GET['tag_ID'];
    $term = get_term_by('id', $term_id, 'taxonomy');
    $meta = get_option("taxonomy_{$term_id}");
    //Insert HTML and form elements here
}

add_action('edited_taxonomy', 'bar_save_extra_fields', 10, 2);
function bar_save_extra_fields($term_id){
    $form_field_1 = $_REQUEST['field-name-1'];
    $form_field_2 = $_REQUEST['field-name-2'];
    $meta['key_value_1'] = $form_field_1;
    $meta['key_value_2'] = $form_field_2;
    update_option("taxonomy_{$term_id}", $meta);
}

カスタム分類法を使用して、コード例全体で「分類法」を必ず変更してください。ユーザーがタグまたはカテゴリを編集したときにのみ表示されます。

タグ編集テーブルに列を追加するように更新します。

function add_post_tag_columns($columns){
    $columns['foo'] = 'Foo';
    return $columns;
}
add_filter('manage_edit-post_tag_columns', 'add_post_tag_columns');

function add_post_tag_column_content($content){
    $content .= 'Bar';
    return $content;
}
add_filter('manage_post_tag_custom_column', 'add_post_tag_column_content');

これは魅力のように機能します!これがスクリーンショットです: http://3-3.me/lFdf

5
Brian Fegter

後世のためだけに、私は、@ IV4のように、それがカスタム税のために働くためにそれを得るために@ Brianの答えとするのにまだちょっと苦労していたので:

add_filter( "manage_{screen_id}_columns", "column_header_function" ) );  
add_action( "manage_{tax_slug}_custom_column",  "populate_rows_function"), 10, 3  ); 

だから私の場合、私のカスタム分類法は "product-category"だったので、私にとっては次のようになりました。

add_filter( "manage_edit-product-category_columns", array ( __CLASS__, "populate_edit_page_column_header" ) );  
add_action( "manage_product-category_custom_column",  array ( __CLASS__, "populate_edit_page_columns"), 10, 3  );

分類のカスタム列では、 がデフォルトで定義されていない列に対してのみカスタム行データを作成できることにも注意してください(ベテランは既に知っていますが)。 その理由は、WP_Terms_List_Tableクラス内では、WP_Posts_List_Tableクラスが機能する方法とは異なり、カスタム列アクションは only column_defaultメソッドを介して呼び出されるためです。そのクラスで定義されているデフォルトの列の1つに一致します(cb、description、links、name、posts、slug)。

私の場合は、説明列を変更したいのですが、代わりに「summary」という名前のカスタム列を作成する必要がありました。その列でソートしたい場合は、カスタム列をソートフィルタに追加する必要があります(ただし、説明列でのソートは意味がありません)。

アクションの関数シグネチャに関しては、最大3つの引数を取ることができますが、そのうちの最初の引数は実際には役に立ちません(@ Brianの回答がどのように機能したか疑問に思います)。

function my_custom_columns( $value, $column, $term_id ){ }

$valueが基本的に空であるところで、$columnはあなたがスイッチを入れたいものであり、あなたがあなたの用語に含まれるデータを参照する必要があるならば$term_idは非常に重要であるかもしれません!

4
Tom Auger

メイン画面に追加する場合

add_action( '<taxonomy-name>_add_form_fields', 'addfields' );
function addfields() {
    echo "<div class='form-field'><label>Wassup</label><textarea></textarea></div>";
}

個別の用語編集フォームに追加する場合

add_action( '<taxonomy-name>_edit_form_fields', 'editfields' );
function editfields() {
    echo "<tr class='form-field'><th>Wassup</th><td><textarea></textarea></td></tr>";
}

私はこれをテストしました、それは働きます。画面を見てください。

taxo_add_form_fieldstaxo_edit_form_fields

通常の投稿カテゴリでこれを使用する場合は、<taxonomy name>を 'category'に置き換えます。どこにでも値を保存するには、次のものが必要です。

add_action( 'created_term',  'store_my_field' , '', 3 );
add_action( 'edit_term',  'store_my_field' , '', 3 );
1