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