使用wp_INSERT_POST添加的帖子会自动移至垃圾桶

时间:2012-11-11 作者:iamjonesy

我有一个脚本,可以循环一些数据并自动创建一些帖子。

foreach($data[\'title\'] as $title)
{
    $my_post = array(
     \'post_title\' => $title,
     \'post_content\' => $data[\'descr\']["{$title}"],
     \'post_status\' => \'publish\',
     \'post_author\' => 1,
     \'post_category\' => array(7)
    );

    // Insert the post into the database
    $post_id = wp_insert_post( $my_post );
    add_post_meta($post_id, \'web_link\', $data[\'link\']["{$title}"]);
}
脚本运行后,我在后端找到帖子,并看到它们已发布。然后我转到主页(我的帖子列表页面),但没有列出任何帖子。我回到后端,看到它们都被移到了垃圾箱。我试图恢复它们,但同样的事情一直在发生。

有什么想法吗?

1 个回复
SO网友:Amar Pratap

@iamjonesy,一种可能是你的主题已经有一些类似标题或段落的已删除帖子,或者主题提供者已经用一些过滤器修改了挂钩。

您可以做以下几件事来检查:尝试查找带有标题的页面,如果该页面在垃圾桶中,请更新它&;更改其状态;否则,以编程方式创建它。

foreach($data[\'title\'] as $title)
{

// Initialize the page ID. This indicates no action has been taken.
    $page_id = -1;

// First, try to get the page
$page = get_page_by_title( $title, OBJECT, \'page\' );

// If the page doesn\'t exist, create it
if( null == $page ) {
否则,如果页面位于垃圾桶中,请更新它并将其状态更改为“发布”

} elseif( \'trash\' == strtolower( $page->post_status ) ) {

    $page->post_status = \'publish\';
    -----your code ---------
希望此帮助:)

结束

相关推荐

Pre_Get_Posts()操作中的多个orderby参数

引用@Otto\'s response 对于我提出的一个关于按多个字段排序的问题,他说:无法使用朴素的WP\\U查询。使用posts\\u orderby过滤器添加您自己的订购字符串。function my_order($orderby) { global $wpdb; return \"{$wpdb->posts.post_author} ASC, {$wpdb->posts.post_date} DESC\"; } add_filte