如何在新帖子上自动勾选多个类别

时间:2018-04-03 作者:Segia

我正在寻找一种在创建新帖子时默认选中多个类别的方法。设置->写入中的内置功能只允许一个,很遗憾,这不适合我的需要。

我的函数中有类似的功能。自动设置默认模板的php:

// Set guest post to default page template
function set_default_page_template() {
    global $post;
    if ( \'post\' == $post->post_type 
        && 0 != count( get_page_templates( $post ) ) 
        && \'\' == $post->post_template // Only when page_template is not set
    ) {
        $post->page_template = "page-templates/template-guest-post.php";
    }
}
add_action(\'add_meta_boxes\', \'set_default_page_template\', 1);
我一直在尝试将相同的原则应用到我的类别中,但不幸的是,到目前为止没有任何效果。任何帮助或指点都将不胜感激!

非常感谢,祝你一切顺利,

朱利安

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

您要查找的筛选器被称为wp_terms_checklist_args 并由使用wp_terms_checklist() (内部调用它以显示类别元框)。

在本例中所示的某些情况下,可以使用此选项预先选择特定类别(按ID)

add_filter(\'wp_terms_checklist_args\', \'WPSE_pre_select_categories\', 10, 2);
function WPSE_pre_select_categories($args, $post_id) {
        $post = get_post($post_id);

        // only pre select categories for new posts
        if ($post->post_status !== \'auto-draft\' || $post->post_type !== \'post\')
                return $args;

        // select categories with ID 4 and 6
        $select_categories = [4, 6];

        // little hack so array_merge() works if default is NULL
        if (empty($args[\'selected_cats\'])) {
                $args[\'selected_cats\'] = [];
        }

        // array_merge() with numerical indices only appends
        // so I use array_unique() to remove any duplicates
        $args[\'selected_cats\'] = array_unique(array_merge($args[\'selected_cats\'], $select_categories));
        return $args;
}

结束

相关推荐

GET_CATEGORIES返回顶级类别而不是子类别

我用下面的代码制作了一个基本的子类别导航菜单。问题出在一个类别上(没有子类别),它将顶级类别作为子类别返回,例如:新闻、未分类等(我尝试分配子类别,但它实际上从菜单中消失,而不是修复内容)这可能是什么原因造成的?function display_category_breadcrumbs () { $current_cat_id = get_cat_id( single_cat_title(\"\",false) ); $parent_cats = get_categ