从自定义帖子类型获取类别

时间:2017-05-27 作者:Nick

我使用此代码在前端发布文章:

//the array of args to be inserted with `wp_insert_post()`:
$new_post = array(
    \'post_title\'    => $title,
    \'post_content\'  => $content,
    \'tags_input\'    => $tags,
    \'post_status\'   => \'publish\',
    \'post_category\' => array(\'0\',$_POST[\'cat\']),         
    \'post_type\'     => $post_type 
);
当我使用post类型时,它起作用了article 但我已经创建了一个自定义的帖子类型,然后,无法再获取该类别。。。

我要用什么来改变array(\'0\',$_POST[\'cat\']) 要从我的自定义帖子类型中获取类别?

1 个回复
SO网友:hwl

无论是如何构建写屏幕以便在前端发布,都可能包括屏幕上的类别,并将其添加到$_POST, 但您的CPT仍然必须注册才能使用它们。我想Articles CPT有这个功能,您可能在创建自己的功能时错过了这一步。

检查您是否为您的CPT注册了类别\'taxonomies\' => array( \'category\' )$args 大堆

旁注:要在注册post\\u类型后添加wordpress类别分类,还可以使用register_taxonomy_for_object_type( $taxonomy, $object_type ); 哪里$taxonomy\'category\'$object_type\'your_post_type\'

快速检查$\\u POST[\'cat\']

2)如果以上都很好,请确保\'$new_post\' 阵列正在接收正确的输入。如果您可能有多个类别,请确保$_POST[\'cat\'] 正在给您一个数组,如果没有,请在$new_post 声明并传递。

    if (is_array($_POST[\'cat\']) {
        $category_array = $_POST[\'cat\'];
    }
   else { //for some reason we have a string
       $category_array[] = $_POST[\'cat\'];
    }

   $new_post = array(
    \'post_title\'    => $title,
    \'post_content\'  => $content,
    \'tags_input\'    => $tags,
    \'post_status\'   => \'publish\',
    \'post_category\' => $category_array,         
    \'post_type\'     => $post_type 
);
用于澄清的自定义分类方案(由于必须将其添加到生成创建后屏幕的任何内容中,我怀疑这是问题所在,但我将添加此内容以供参考)

如果您的类别是taxonomy you registered (即图书CPT的流派),$new_post 将需要tax_input as described in wp_insert_post parameters, 作为一个数组,就像上面的类别一样。

假设您的$_POST 有字段用于\'my_taxonomy\', 这是一个选定my_taxonomy 写入屏幕的选项,即:

 $_POST[\'my_taxonomy\'] = array(
                           \'my_taxonomy\' => $entered_value[0],
                           \'my_taxonomy\' => $entered_value[1]
                         )   
$new_post 看起来像这样:

   $new_post = array(
    \'post_title\'    => $title,
    \'post_content\'  => $content,
    \'tags_input\'    => $tags,
    \'post_status\'   => \'publish\',
    \'post_tax\'      => $_POST[\'my_taxonomy\'],         
    \'post_type\'     => $post_type 
);
前面关于post\\u类型的回答将在post\\u类型行中声明您的自定义post类型。\'post_type\' => $post_type );您需要编辑变量的值$post_type 的确如此name_of_your_post_type

结束

相关推荐

使用QUERY_POSTS()从循环中排除第一个POST(粘性或非粘性)

我正在使用query_posts( \'offset=1\' ); 将第一篇文章从循环中排除。但是,如果第一个帖子是粘性帖子,则会显示该帖子,而第二个(非粘性)帖子不会显示。是否有任何方法可以隐藏第一篇帖子,无论它是否有粘性?我不能使用ignore_sticky_posts 因为我只想隐藏第一个。谢谢你的帮助!