我试图在插件激活期间在网站上创建一个页面。代码工作正常,函数调用返回一个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在那里。我看不出有什么问题,但显然缺少了一些东西。我哪里做错了?
最合适的回答,由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());