【发布时间】:2017-01-01 05:39:04
【问题描述】:
我正在插入通过管理区域中的自定义菜单生成的多个页面。 这是那部分代码:
$_p = array();
$_p['post_title'] = $the_page_title;
$_p['post_content'] = $the_page_content;
$_p['post_status'] = 'publish';
$_p['post_type'] = 'page';
$_p['comment_status'] = 'closed';
$_p['ping_status'] = 'closed';
$_p['post_category'] = array(1);
$the_page_id = wp_insert_post( $_p);
由于某种原因,在循环中执行插入时,我看到了一个 404 页面(不是实际的重定向 - URI 相同且正确,但内容是 404 页面的内容)。我知道这是原因,因为注释掉该行可以解决问题。 而且我确信 404 不是由于缺少页面,因为刷新页面可以解决问题 - 网址相同并且可以打开。
我将问题缩小到在“parse_query”中发送的“错误”,但我找不到原因。
if ( '404' == $qv['error'] ) $this->set_404();
更奇怪的是,我尝试在 query.php(其中定义了 parse_query)中进行 var_dump-ing,如果我转储某些内容,则没有 404 重定向 - 一切正常。
我在 SO 上发现了类似的问题,但他们的问题与表单中的 POST 参数有关,在我的情况下没有。
有没有人遇到过这样的行为?在什么情况下 wp_insert_post 会显示 404 ?我在 wordpress 4.6 上
【问题讨论】:
-
wp_insert_post()本身无法重定向页面。我建议您分享更多代码... -
@mevius 不幸的是它可以重定向。它使用 parse_query 方法,其中有一行 if ( '404' == $qv['error'] ) $this->set_404();它返回与 URL 相同的页面,但内容为 4o4
-
如果有人能解释为什么这个问题被否决了,那就太好了。
-
我也有同样的问题,你找到解决办法了吗?
-
@FDI 原来它与托管有关。我使用的是 PHP 7.0 和带有子域的 Cpanel 托管。但是,在我创建新安装并添加相同的插件后,一切正常。它也适用于其他服务器 - 除了安装(全新)之外的任何地方