在自定义 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' );