【问题标题】:wp_insert_post shows 404 (page not found)wp_insert_post 显示 404(找不到页面)
【发布时间】: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 托管。但是,在我创建新安装并添加相同的插件后,一切正常。它也适用于其他服务器 - 除了安装(全新)之外的任何地方

标签: php wordpress


【解决方案1】:

您必须单击仪表板设置下的“保存永久链接”按钮。该按钮保存新页面以提供良好的工作。或者您可以向插件添加一些代码以保存永久链接。刚才,我用同样的问题解决了这边。

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 2013-06-28
    • 2015-08-14
    • 2012-06-17
    • 2016-08-01
    相关资源
    最近更新 更多