如果每个帖子的URL参数为空,则Wordpress重定向

时间:2017-04-13 14:17:11

标签: wordpress redirect

因此,有些人直接访问我的网站(不是通过我使用Voluum获得的跟踪链接),因此他们无法点击链接,我无法将其视为我的统计数据的一部分。 如何将没有/?voluumdata=BASE64...网址参数的用户重定向到跟踪的网址,并为每篇博文发布不同的重定向?

我正在测试并寻找一个插件/ .htaccess技巧几个小时,但似乎没有任何帮助。

编辑:我找到了一个解决方案,我确信它会起作用,但出于某种原因它没有:

[insert_php]

if(empty($_GET['voluumdata'])) 
{ 
  header('Location: REDIRECT_URL');
  exit; 
}
[/insert_php]

也尝试过:

[insert_php]
if(!isset($_GET['voluumdata'])) 
{ 
  header('Location: REDIRECT_URL');
  exit; 
}
[/insert_php]

两者都打破了页面加载过程。

2 个答案:

答案 0 :(得分:0)

不幸的是,我无法理解您在问题中输入的代码的目的是什么。我的意思是你不清楚使用标签[insert_php]的原因。

您的问题的解决方案可以是以下内容。

function redirect_direct_access( ) {
    // You may use the code:
    //
    //     global $wp_query
    //
    // in order to determine in which pages you should run your
    // redirection code. If you only check for the token existence
    // then you will be faced with redirection loop. I don't explain in
    // depth how to use the $wp_query as it is not part of your question
    // but you always have the opportunity to check what is the contents
    // of this variable using the code:
    //
    //    echo "<pre>";
    //    print_r( $wp_query );
    //    echo "</pre>";
    //
    // This way you will be able to build your specific if statement
    // for the page you like to test.

    if ( 
        ! isset( $_GET[ 'voluumdata' ] ) ||
        empty( $_GET[ 'voluumdata' ] ) 
    ) { 
        wp_redirect( home_url( '/page/to/redirect/' ) );
        exit();
    }
}

add_action( 'template_redirect', 'redirect_direct_access' );

您可以在WordPress文档中找到与template_redirect挂钩相关的更多信息。

答案 1 :(得分:0)

万一有人会遇到同样的问题,@ Merinoos Nikos给出了一个半答案,我把它掌握到了这个:

function redirect_direct_access( ) {

    $post_id = get_the_ID();

    if ( 
    $post_id == POST_ID &&
        !isset( $_GET[ 'voluumdata' ] )
    ) { 
        wp_redirect( 'REDIRECT_URL' );
        exit();
    }

    if ( 
    $post_id == POST_ID &&
        !isset( $_GET[ 'voluumdata' ] )
    ) { 
        wp_redirect( 'REDIRECT_URL' );
        exit();
    }
}

add_action( 'template_redirect', 'redirect_direct_access' );