Setting a post's category

时间:2012-01-17 作者:Eray

我正在使用创建新类别galleries 分类法:

$wpdb->insert("wpem_terms", array(
    \'name\'=>\'Custom Category\',
    \'slug\'=>\'customcategory\',
    \'term_group\'=>0,
));

//id of term
$id = $wpdb->insert_id;

$wpdb->insert("wpem_term_taxonomy", array(
    \'term_id\'=>$id,
    \'taxonomy\'=>\'galleries\',
    \'description\'=>\'\',
    \'parent\'=>\'\',
    \'count\'=>\'\',
));
它正在工作。然后我正试图发布一篇新文章,其中包含这个新创建的类别:

wp_insert_post(array(
    \'post_author\'=>1,
    \'post_date\'=>date(\'Y-m-d H:i:s\'),
    \'post_date_gmt\'=>date(\'Y-m-d H:i:s\'),
    \'post_content\'=>\'\',
    \'post_title\'=>\'\',
    \'post_excerpt\'=>\'\',
    \'post_status\'=>\'publish\',
    \'comment_status\'=>\'closed\',
    \'post_name\'=>\'\',
    \'post_parent\'=>0,
    \'post_type\'=>\'portfolio\', // with \'portfolio\' custom post type
    \'post_category\'=>array($id),

));
这是发布帖子,没关系,但帖子的类别不是Custom Category . 我认为这一行无效:

\'post_category\'=>array($id),
有什么想法吗?我也试过这个:

\'post_category\'=>array(get_cat_ID("Custom Category")),

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

尝试执行以下操作:

$insert_post = wp_insert_post(array(
    \'post_author\'=>1,
    \'post_date\'=>date(\'Y-m-d H:i:s\'),
    \'post_date_gmt\'=>date(\'Y-m-d H:i:s\'),
    \'post_content\'=>\'\',
    \'post_title\'=>\'\',
    \'post_excerpt\'=>\'\',
    \'post_status\'=>\'publish\',
    \'comment_status\'=>\'closed\',
    \'post_name\'=>\'\',
    \'post_parent\'=>0,
    \'post_type\'=>\'portfolio\', // with \'portfolio\' custom post type
    \'post_category\'=>array($id),
));
if( $insert_post ) {
    wp_set_object_terms( $insert_post, intval( $id ), \'galleries\');
}
使用wp_set_object_terms 您可以在任何分类法中设置帖子的术语。第一个参数是ID of the post, 第二个参数是ID or slug of the term, 第三个是name of the taxonomy. 如果使用ID作为术语,则必须使用intval() 否则,它将创建一个仅为数字的术语。

结束

相关推荐

Print_r如果放置在侧边栏或single.php中,则显示两个不同的POST->ID

我的网站正在为同一篇文章显示两个不同的ID(如果是print\\r)。如果我问:<?php echo $post->ID;?> 在单曲中。php它给了我一个数字。如果我在侧边栏中做同样的事情,它会给我一个完全不同的结果。这就是我在单曲上打印的内容。phpstdClass Object ( [ID] => 59 [post_author] => 1 [post_date] => 2012-01-01 20:29:18 [post_date_gmt] =