2017-04-13 10 views
0

私のウェブサイトに直接アクセスする人がいます(私はVoluumとのトラッキングリンクを経由しないため)、リンクをクリックすることができず、私の統計の一部として /?voluumdata=BASE64... URLパラメータを持たないユーザーを、トラッキングされたURLにリダイレクトする方法と、各ブログ投稿ごとに異なるリダイレクトを行う方法はありますか。URLのパラメータが各投稿ごとに空の場合、Wordpressのリダイレクト

私は何時間もプラグイン/ .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] 

どちらもちょうどページの読み込みを破りますプロセス。

答えて

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'); 

さらに詳しい情報は、template_redirectフックに関連するワードプレスのドキュメントを参照してください。

+0

投稿ごとのURL? Voluumのようなサービスをトラッキングするのは、彼らがあなたに与えるユニークなリンクを介して訪問者を追跡するだけなので、Googleアナリティクスのようなjsスクリプトで訪問者をトラッキングするオプションはありません。 '[insert_php]'タグはWPプラグインで使用されるタグで、phpコードを直接ポストに挿入できます。 – Ricardo

+0

小さな研究の後、私はほとんどそれをやったのですが、今私が抱いている唯一の問題はページの検出です。だから、投稿ID 180の 'IF'を作成したいとしましょう、'!isset'の前に 'is_page(180)&&'を追加しますか?なんらかの理由で動作しなくなり、すべてのページでリダイレクトされます。どんな助け? – Ricardo

+0

'[insert_php]'ショートコードの解決法は動作しません。文字をブラウザに出力する前に、PHPでリダイレクトを行う必要があります。そのため、リダイレクトはできません。上記のスニペットのコメントにあるコードを使用しようとすると、そのページのIDおよび/または訪問者がアクセスした投稿を持つことが可能になります。このコードを試してみましょう。 'global $ wp_query; echo "

"; print_r($wp_query); echo "
"; 'あなたが訪問したページの情報が多すぎます。これがあなたを助けることを願っています最後に、あなたが私の答えに満足しているなら、投票してください –

0

は、ケース、誰もが同じ問題に直面するだけで、@Merianosニコスは、ハーフ答えを与えていると私はこれにそれをマスター:私は別のリダイレクトを設定する必要がある場合は良い音が、何

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'); 
関連する問題