WP_UPDATE_POST未更新类别

时间:2012-11-10 作者:Eckstein

我正在使用此自定义功能为用户在我的网站前端添加发布/取消发布按钮:

    if (\'draft\' == get_post_status ($post_id)) {
            $post = get_post($post_id,ARRAY_A);
            $post[\'post_status\'] =\'publish\';
            wp_insert_post($post);
            }


        else if (\'publish\' == get_post_status ($post_id)) {
            $post = get_post($post_id,ARRAY_A);
            $post[\'post_status\'] =\'draft\'; 
            wp_update_post($post);
            }
但是,由于某种原因,帖子的类别正在更改为帖子的父类别,而不是坚持帖子的实际类别。

例如,我有5个类别,其中有一个父类别,如下所示:

ParentCat
 - ChildCat1
 - ChildCat2
 - ChildCat3
 - ChildCat4
 - ChildCat5
前端的每个帖子都分为五个类别之一。当我单击我创建的“发布”按钮时,它会将类别更改为“ParentCat”,而不是将其保留为子类别。

有人知道我怎么解决这个问题吗?

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

我想出来了!显然,类别不再是POST数据库表的一部分,而是存储在其他地方。因此,使用wp\\u insert\\u post无法设置类别。

我必须使用wp\\u set\\u post\\u术语来设置类别,以便在发布时同时自动设置父项和子项。

wp\\u update\\u post似乎不会弄乱类别,所以没有必要将它们传递到那里。

以下是now working函数的一部分:

$category=get_the_category ($post_id);
    $categories=array (\'89\', $category[0]->cat_ID);

    //Publish or unpublish post
        if (\'draft\' == get_post_status ($post_id)) {
            $post = get_post($post_id,ARRAY_A);
            $post[\'post_status\'] =\'publish\';
            wp_insert_post($post);
            wp_set_post_terms( $post_id, $categories, \'category\' );
            }


        else if (\'publish\' == get_post_status ($post_id)) {
            $post = get_post($post_id,ARRAY_A);
            $post[\'post_status\'] =\'draft\'; 
            wp_update_post($post);
            }
我希望这对某人有帮助!

结束