添加操作前术语描述与前类别描述

时间:2018-12-06 作者:uncovery

我试图设置一个默认标签和一个(不同的)默认类别描述,以防在创建时没有给出。

我找到了“pre\\u category\\u description”操作,但没有与标记对应的操作。我唯一能找到的是“pre\\u term\\u description”,但这个词的行为很奇怪。

我已将以下代码添加到我的插件中:

add_action(\'pre_term_description\', \'default_term\');
function default_term($description) {
    if ($description == \'\'){
        $description_new = "default term description";
    } else {
        $description_new = $description;
    }
    error_log("setting term description");
    return $description_new;
}

add_action(\'pre_category_description\', \'default_category\');
function default_category($description) {
    if ($description == \'\'){ // we only replace in case there is a setting and no input
        $description_new = "default category description";
    } else {
        $description_new = $description;
    }
    error_log("setting category description");
    return $description_new;
}
然而,似乎对标记和类别都执行了pre\\u term description,并且term description推翻了category one,尽管它是最后执行的。

如果添加新标记,则会得到以下日志条目:

[06-Dec-2018 07:44:54 UTC] setting term description
结果描述为“默认术语描述”

如果我添加一个新类别,我会在这里看到:

[06-Dec-2018 07:44:54 UTC] setting term description
[06-Dec-2018 07:44:54 UTC] setting category description
结果描述也是“默认术语描述”

如果编辑的项目是一个类别或标记,如何进行区分,以使其正常工作?

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

类别和标记都是术语,这就是代码运行两次的原因。

您需要使用传递给回调函数的第二个参数pre_term_description 钩子,它告诉您当前正在应用筛选器的分类:

function wpse_321166_default_term_description( $description, $taxonomy ) {
    if ( $description ) {
        return $description;
    }

    switch ( $taxonomy ) {
        case \'category\':
            $description = \'Setting category description\';
            break;
        case \'post_tag\':
            $description = \'Setting tag description\';
            break;
    }

    return $description;
}
add_action( \'pre_term_description\', \'wpse_321166_default_term_description\', 10, 2);
钩子的文档有点难以获得资金,因为它有一个变量名,但您可以看到分类参数是如何可用的here.

相关推荐

Dropdown menu for categories

当我使用下面的代码时<?php wp_nav_menu( array(\'menu\' => \'categories\' )); ?> 我可以创建一个新的菜单来列出我创建的wordpress中的所有类别。我用它在页面中间列出所有类别。我现在的问题是:有没有一种简单的方法可以为存在的每个子类别创建下拉菜单?那么,当我点击一个特定的类别时,它的子类别会显示出来吗?