在自定义 url 上重定向特定 post
Redirect particular post on custom url
我想重定向任何具有特定元数据的 post,我尝试了以下代码:
function my_call_back() {
if( is_single() ) {
global $post;
$meta = get_post_meta( $post->ID, 'my_meta', true );
if( $meta == 'my_value' ) {
wp_redirect( 'http://google.com' );
exit;
}
}
}
add_action( 'init', 'my_call_back' );
但是$post
变量returns空值,所以我不能在init
钩子中使用global $post
。
有什么方法可以实现这个功能吗?
谢谢
我认为问题在于您挂接到 init
有点太早了。尝试将您的函数挂钩到 template_redirect
,如下所示:
function my_call_back() {
if( is_single() ) {
global $post;
$meta = get_post_meta( $post->ID, 'my_meta', true );
if( $meta == 'my_value' ) {
wp_redirect( 'http://google.com' );
exit;
}
}
}
add_action( 'template_redirect', 'my_call_back' );
我想重定向任何具有特定元数据的 post,我尝试了以下代码:
function my_call_back() {
if( is_single() ) {
global $post;
$meta = get_post_meta( $post->ID, 'my_meta', true );
if( $meta == 'my_value' ) {
wp_redirect( 'http://google.com' );
exit;
}
}
}
add_action( 'init', 'my_call_back' );
但是$post
变量returns空值,所以我不能在init
钩子中使用global $post
。
有什么方法可以实现这个功能吗?
谢谢
我认为问题在于您挂接到 init
有点太早了。尝试将您的函数挂钩到 template_redirect
,如下所示:
function my_call_back() {
if( is_single() ) {
global $post;
$meta = get_post_meta( $post->ID, 'my_meta', true );
if( $meta == 'my_value' ) {
wp_redirect( 'http://google.com' );
exit;
}
}
}
add_action( 'template_redirect', 'my_call_back' );