类别/术语描述中的限制字词-管理面板

时间:2014-07-03 作者:Howdy_McGee

我正在使用一种分类法,其中术语有很长的描述。当WordPress试图显示10个类别的描述时,管理面板看起来非常难看。我正试图找出一种方法来限制类别/术语描述列中显示的单词或字符数,但我找不到正确的挂钩,无法在类别描述显示时访问它。我在用这个list of Hooks 作为指导,似乎指向正确方向的两个挂钩是:

过滤器:manage_taxonomies_for_{$post_type}_columns

function funcy_test($empty = \'\', $column, $term_id) 
{
    return \'\';
}
add_filter(\'manage_taxonomies_for_cpt_products_columns\', \'funcy_test\', 10, 3);
我希望它返回周围的空列,但我没有看到结果。一种可能的解决方案是完全删除描述类别并使用custom_columns 钩子添加我自己的描述栏,但这似乎太麻烦了。

是否有办法限制管理面板中术语描述的单词/字符?

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

好的,我重新考虑了这个问题并修改了我的答案。。

但正如我之前所说:

你(试图)使用的钩子不会/无法达到你的目标,因为它只出现在class-wp-posts-list-table.php, 哪个名称是用来显示帖子列表的,正确的位置应该是class-wp-terms-list-table.php.


1。您可以执行以下操作:

利用admin_head-$hook_suffixget_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_columnmanage_{$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 );
}

SO网友:JoyChetry

环顾四周后,我发现你可以在wp\\u trim\\u单词中添加任何内容:

<?php echo wp_trim_words( get_the_content(), 40, \'...\' ); ?>

将函数替换为get\\u the\\u content(),在您的情况下,可以使用此函数:

<?php echo wp_trim_words( get_the_archive_description(), 30, \'...\' ); ?>

有关更多文档检查wp_trim_words()

SO网友:revive

一点更干净的阅读解决方案。

    add_action( \'admin_head-edit-tags.php\', \'admin_edit_tags\' );
    function admin_edit_tags() {
        add_filter( \'get_terms\', \'admin_trim_category_description\', 10, 2 );
    }
    function admin_trim_category_description( $terms, $taxonomies ) {
        if ( !is_admin()) // only allow in admin
            return;
    
        if( \'category\' != $taxonomies[0] )
            return $terms;
        foreach( $terms as $key=>$term )
            // change 150 to whatever character length you want the description to be
            $terms[$key]->description = substr( $term->description, 0, 150 ); 
        return $terms;
}
原始。从…起https://www.isitwp.com/truncate-description-within-categories-admin-panel/

结束

相关推荐

SQL-通过PhpMyAdmin删除所有用户并创建具有管理员角色的新用户

通过wp admin panel可以很容易地删除所有用户并添加具有管理角色的新用户。但要求是通过SQL实现这一点。我可以特鲁克wp_users 和wp_usermeta 表以删除所有用户。但当我在wp_users 使用虚拟数据,然后通过wp admin登录,然后显示登录不正确。为什么?如果您能告诉我删除所有用户并添加具有管理员角色的用户的正确方法,我将非常感谢您。