404重定向不起作用

时间:2012-06-14 16:41:52

标签: php wordpress

您好我输入的是一个显示页面的插件,而不是在不存在的页面上发送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');

3 个答案:

答案 0 :(得分:2)

在wordpress周期中你的动作挂钩可能太早,以确定它是否是404. http://codex.wordpress.org/Plugin_API/Action_Reference/init。尝试使用以后的动作挂钩。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

USE:template_redirect代替pre_get_post,如果您需要更改WP_Query上的内容