EDIT-Tags.php主页上的定制列

时间:2011-09-14 作者:IV4

我正在尝试添加自定义列以编辑标记。php,用于我创建的自定义分类法。这种自定义分类法称为设备类型,它仅适用于一种称为设备的自定义post类型。我正在尝试使用与在编辑中添加自定义列相同的过滤器和操作。php页面。我能够使用此筛选器实际创建自定义列:

add_filter(\'manage_edit-equipment-types_columns\', \'define_equip_types_columns\');
然而,我似乎无法用任何数据填充这些列。通常,用于编辑。php页面我将使用以下操作:

add_action(\'manage_posts_custom_column\', \'my_post_type_columns_content\'));
然后在my\\u post\\u type\\u columns\\u content函数中,我会根据post类型有条件地输出列数据。

问题是,我似乎找不到类似的“编辑标签”页面挂钩。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
我认为这些都没有任何帮助。有人知道这样做的方法吗?我太接近了,我已经用标题创建了列,我只需要用数据填充它们!

编辑:要明确的是,我并没有试图创建自定义字段。我正在尝试在分类法主页右侧的表中创建自定义列。

定期进行编辑。php页面,其中显示该帖子类型的所有帖子。我可以自定义列,如数量列,如下所示:

enter image description here

然而,我认为没有一个钩子来填充编辑标记上的列。php主页,即使我可以创建自定义列,如下面的图像URL:

enter image description here

3 个回复
最合适的回答,由SO网友:Brian Fegter 整理而成

您可以通过挂接“taxonomy”\\u edit\\u表单和“edit\\uTaxonomy”操作来完成此操作。

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

SO网友:Tom Auger

只是为了子孙后代,因为我,像@IV4一样,对于@Brian的答案仍然有一些争论,以使其适用于海关税:

add_filter( "manage_{screen_id}_columns", "column_header_function" ) );  
add_action( "manage_{tax_slug}_custom_column",  "populate_rows_function"), 10, 3  ); 
所以在我的例子中,我的自定义分类法是“产品类别”,所以对我来说是这样的:

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 类工作时,自定义列操作仅通过调用column_default 方法,仅当列名与该类中定义的默认列之一(cb、description、links、name、posts、slug)不匹配时才调用该方法。

在我的例子中,我想修改description列,但不得不创建一个名为summary的自定义列。还要注意,如果要对自定义列进行排序,则必须将其添加到排序过滤器中(尽管在我的情况下,对描述列进行排序没有意义)。

就操作的函数签名而言,它最多可以包含3个参数,其中第一个参数实际上是无用的(这让我想知道@Brian的答案到底是如何工作的):

function my_custom_columns( $value, $column, $term_id ){ }
在哪里$value 基本上是空的,$column 是您想要打开的,并且$term_id 如果您需要引用术语中包含的任何数据,这可能非常重要!

SO网友:Rutwick Gangurde

要在主屏幕上添加:

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_fields,taxo_edit_form_fields.

代替<taxonomy name> 如果您想在常规帖子类别中使用此选项,请使用“类别”。要在任何需要的地方保存值,您需要:

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

结束

相关推荐

In need of array of post tags

在循环中的单个post页面上,我需要一个字符串形式的\\u tags()数组。get\\u tags()为我提供了所有的标签,而不仅仅是这篇文章。有没有一种简单的方法可以做到这一点?