0

嗨,我正在输入一个插件,该插件在不存在的页面上显示页面而不是发送 404 页面

我知道我可以编辑到 404.php 文件来执行此操作,但我需要将其放入插件中。

如果我删除 if 语句,那么它在所有页面上都有效,这不是我想要的。
所以我把 if(is_404()) 语句放进去,但它现在似乎根本不起作用......

    function da_404_redirect()
    {
      if(is_404())
      {      
        query_posts('page_id=2');
        status_header( "200" );
      }
    }
    add_action('init','da_404_redirect');
4

3 回答 3

2

您的操作钩子在 wordpress 周期中可能为时过早,无法知道它是否是 404。http://codex.wordpress.org/Plugin_API/Action_Reference/init。尝试使用稍后的操作挂钩。

于 2012-06-15T00:10:50.583 回答
2

正如尼克上面所说,你可能会陷入迟到的事件。以我的经验,template_redirect是最好的选择。

于 2012-06-15T00:22:27.387 回答
1

要重定向,请不要init挂上 ,尤其是在使用 is_404() 之类的条件标记时。任何条件标签仍将返回falsein init

使用:template_redirect相反,或者pre_get_post如果您需要更改某些内容WP_Query

于 2012-06-15T00:28:27.447 回答