WP_INSERT_POST有效,但该帖子在管理员帖子列表或前端中不可见

时间:2017-03-29 作者:user1889580

我试图在插件激活期间在网站上创建一个页面。代码工作正常,函数调用返回一个post ID,但是当我检查管理区域中的页面列表时,那里什么都没有。Wordpress正在检测它们,就像我进入pages菜单项一样,uinder All()的数量增加了,但发布的页面数量没有增加。

$postarr["post_content"] = "[submission_widget]";
$postarr["post_title"] = "Submit Content";
$postarr["post_status"] = "published";
$postarr["post_type"] = "page";
$postarr["post_name"] = sanitize_title("Submit Content");
$postarr["post_date_gmt"] = date(\'Y-m-d H:i:s\', time());
$postarr["post_date"] = date(\'Y-m-d H:i:s\', time());
$postarr["post_modified"] = date(\'Y-m-d H:i:s\', time());
$postarr["post_modified_gmt"] = date(\'Y-m-d H:i:s\', time());
$postid = wp_insert_post($postarr, true);
update_post_meta( $postid, \'_visibility\', \'visible\' );
为了再次检查,我进入DB中的posts表,我可以看到post在那里。我看不出有什么问题,但显然缺少了一些东西。我哪里做错了?

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

问题是$postarr["post_status"] = "published"; 您应该将其更改为

$postarr["post_status"] = "publish"; // Set it to \'publish\', not \'published\'
现在,这有点离题了,但您可能希望省略以下内容(这些内容是由wp_insert_post() 默认情况下):

$postarr["post_date_gmt"] = date(\'Y-m-d H:i:s\', time());
$postarr["post_date"] = date(\'Y-m-d H:i:s\', time());
$postarr["post_modified"] = date(\'Y-m-d H:i:s\', time());
$postarr["post_modified_gmt"] = date(\'Y-m-d H:i:s\', time());

相关推荐

是否可以取消对特定帖子类型的POSTS_PER_PAGE限制?

我想知道我是否可以取消特定帖子类型的posts\\u per\\u页面限制。在存档中。php页面我显示不同的帖子类型,对于特定的“出版物”帖子类型,我想显示所有帖子。我如何在不影响传统“post”类型的情况下实现这一点?