好的,我重新考虑了这个问题并修改了我的答案。。
但正如我之前所说:
你(试图)使用的钩子不会/无法达到你的目标,因为它只出现在class-wp-posts-list-table.php
, 哪个名称是用来显示帖子列表的,正确的位置应该是class-wp-terms-list-table.php
.
1。您可以执行以下操作:
利用admin_head-$hook_suffix
和get_terms
钩
add_action(
\'admin_head-edit-tags.php\',
\'wpse152619_edit_tags_trim_description\'
);
function wpse152619_edit_tags_trim_description() {
add_filter(
\'get_terms\',
\'wpse152619_trim_description_callback\',
100,
2
);
}
function wpse152619_trim_description_callback( $terms, $taxonomies ) {
// print_r($taxonomies);
if( \'category\' == $taxonomies[ 0 ] ) {
foreach( $terms as $key => $term ) {
$terms[ $key ]->description =
wp_trim_words(
$term->description,
12,
\' [...]\'
);
}
}
return $terms;
}
这会将描述修剪为指定的字数。
2。另一种常见的可能性是删除默认列并创建一个新列:
利用manage_{$this->screen->taxonomy}_custom_column
和manage_{$this->screen->id}_columns
钩
function wpse152619_create_new_description_column( $columns ) {
if ( $_GET[ \'taxonomy\' ] == \'category\' ) {
// uncomment next line to remove default description column
//unset( $columns[ \'description\' ] );
// create new description column
$columns[ \'new_description\' ] = \'New Description\';
return $columns;
}
return $columns;
}
add_filter(
\'manage_edit-category_columns\',
\'wpse152619_create_new_description_column\'
);
function wpse152619_new_description_column_content(
$deprecated,
$column_name,
$term_id
) {
if ( $column_name == \'new_description\' ) {
$new_description =
wp_trim_words(
term_description(
$term_id,
$_GET[ \'taxonomy\' ]
),
12,
\' [...]\'
);
echo $new_description;
}
}
add_filter(
\'manage_category_custom_column\',
\'wpse152619_new_description_column_content\',
10,
3
);
3。也可能是:
扩展课程WP_List_Table
你自己,就像WP_Terms_List_Table
确实如此在您的情况下,主要目标是重新定义column_description
方法此外,创建一个新模板,类似于edit-tags.php
, 但是使用新创建的类然后您必须确保加载了新模板,而不是默认模板好的,但这只是一个提纲也是可能的。在这种简单的情况下没有任何意义,但对于高级用例,这将是一种需要考虑的方法
我相信以上这些应该能解决你的问题。注意,我为category edit页面做了一些示例,但如何为自定义分类法做这些应该是显而易见的。根据需要,可以选择简单或复杂的方法。在你的情况下,第一个应该很好。
最后但并非最不重要的一点是,以下功能可方便地获取所需信息:
add_action( \'admin_head\', \'wpse152619_dbg_dev\' );
function wpse152619_dbg_dev() {
global $pagenow;
print_r( $pagenow );
echo \'<br>\';
print_r( $_GET[ \'taxonomy\' ] );
echo \'<br>\';
$current_screen = get_current_screen();
print_r( $current_screen->id );
}