如果我的url是/PageThatDontExist,我想做点什么,但我不想让wp发送404个标题。我试过这个:
add_action(\'wp\', array($this,\'awp\'));
function awp(){
global $wp_query ;
debug($wp_query->is_404);
if($wp_query->query_vars[\'name\'] == \'pagethatdontexist\')
debug(\'yes were at pagethatdontexist\');;
$wp_query->is_404 = false;
debug($wp_query->is_404);
}
虽然有效,但仍发送了404个标头。
我在哪里可以联系上,告诉wp不要发送404?
编辑——好吧,这似乎起到了作用,我不确定这是否符合犹太教。
function filter_status_header( $status_header, $header, $text, $protocol ){
global $wp_query;
if (iDontWant404()){
$wp_query->is_404 = false;// still sends 404 unless:
return \'HTTP/1.1 200 OK\';
}
else
return $status_header;
}
add_filter(\'status_header\',array($this,\'filter_status_header\'),4,4);
最合适的回答,由SO网友:SergeyBiryukov 整理而成
您可以使用较早的操作,request
, 做任何你需要的事。它允许您修改查询变量,甚至取消整个请求,而无需发出404错误:
function wpse112929_cancel_request_parsing( $query_vars ) {
if ( in_array( \'pagethatdontexist\', $query_vars ) ) {
return array();
}
return $query_vars;
}
add_action( \'request\', \'wpse112929_cancel_request_parsing\' );
我用过
in_array()
这里不是直接比较,因为实际匹配取决于permalink结构。是的
name
对于
/%postname%/
,
category_name
对于
/%category%/%postname%/
,
pagename
对于
/%year%/%monthnum%/%postname%/
, 等
您也可以检查$_SERVER[\'REQUEST_URI\']
相反