根据帖子状态设置分类

时间:2022-02-22 作者:Nik

我正在根据post\\u状态设置分类。它可以根据需要工作,但如果选择了特定的分类法,我希望允许覆盖该分类法。

这是代码

function add_categories_automatically($postID) {
    if(get_post_status($postID) == \'draft\'){
        $catsID = array(1); //active
        wp_set_post_categories($postID, $catsID);
    }
    if(get_post_status($postID) == \'publish\'){
        $catsID = array(5); //complete
        wp_set_post_categories($postID, $catsID);
    }
    if(get_post_status($postID) == \'publish\' && has_category( \'billed\' ) ){
        $catsID = array(16); //billed
        wp_set_post_categories($postID, $catsID);
    }
}
add_action(\'save_post\', \'add_categories_automatically\');
在最后一条if语句中,我尝试使用&&;如果发布了帖子并选择了付费类别,则设置新类别。它只是在前面的if语句中一直被设置为id 5。

关于如何使最后一个if语句起作用,有什么想法吗?

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

这就是在上面WebElaine的帮助下工作的原因。我必须把帖子传给has_category() 然后设置变量。

function add_categories_automatically($postID) {
    $p_published = get_post_status($postID) == \'publish\';
    $p_draft = get_post_status($postID) == \'draft\';
    $p_cat = has_category( \'billed\', $postID);  
    
    if ($p_draft == \'draft\'){
        $catsID = array(1); //active
        wp_set_post_categories($postID, $catsID);
    }
    if ($p_published == \'publish\'){
        $catsID = array(5); //complete
        wp_set_post_categories($postID, $catsID);
    }
    if($p_published == \'publish\' && $p_cat ){
        $catsID = array(16); //billed
        wp_set_post_categories($postID, $catsID);
    }
}
add_action(\'save_post\', \'add_categories_automatically\');

相关推荐

Add code to Functions.php

我想知道我是否在函数中添加了一些短代码。php在我的主题和解决我的问题,会发生什么,如果我更新我的主题??更新后是否删除我的短代码??在将代码添加到函数后,更新主题是否会有任何问题。php?