私が作成したカスタム分類法のために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ページでは、定期的に次のような数量列などのカスタム列を作成できます。
しかし、下のImage URLのようなカスタムカラムを作成することができても、edit-tags.phpメインページのカラムに値を設定するためのフックはないと思います。
これを行うには、 '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
後世のためだけに、私は、@ 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
は非常に重要であるかもしれません!
メイン画面に追加する場合
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>";
}
私はこれをテストしました、それは働きます。画面を見てください。
、。
通常の投稿カテゴリでこれを使用する場合は、<taxonomy name>
を 'category'に置き換えます。どこにでも値を保存するには、次のものが必要です。
add_action( 'created_term', 'store_my_field' , '', 3 );
add_action( 'edit_term', 'store_my_field' , '', 3 );