web-dev-qa-db-ja.com

ユーザーが特定のリファラーから来たときにコードを挿入する

私はこれがかなり奇妙な質問だと思うので、私に詳しく述べさせてください。

ユーザーが特定の参照元から来て特定のURLに到達したときに自分の投稿にコードを追加できるようにしたいです。

これはmyweb.com/addcodeのような1つの特定のURLでのみ起こるので、ユーザーがそこに着くと次のプロセスが引き起こされます。

  1. 参照元を確認します
  2. 参照元が一致すると、ユーザーはランダムな投稿にリダイレクトされ、コードが追加されます。
  3. そうでなければ、ユーザーはただランダムな投稿にリダイレクトされます。

リファラーチェックとランダムなポストリダイレクションについては、すでに私は取り組んでいます。

ランダムリダイレクト。

私が見つけたstackoverflowを介して検索 このトピック 彼らはランダムな投稿を表示するためのいくつかの素晴らしい解決策を与える。

参照元。

参照元をチェックするために、私はwp_get_referer()を使っています

$referer = wp_get_referer();
if (  strpos($referer ,'http://wanteddomain.com') !== false )

それで、私は自分の投稿にコードを「挿入」するためのきれいな方法を見つけることが残されています。

私はいくつかの純粋なhtmlコードを追加できるようにしたいのですが、トピックに関する情報を見つけることができませんでした(私は確かに間違った表現を使っています)。

何をどこで調査すべきかについての手助けや指示は大歓迎です!

そして、この無意味なことを読んであなたの時間を割いてくれてありがとう!

1
Luis Fernández

あなたの投稿は理にかなっています、あなたは単に参照元に基づいていくつかのコンテンツを変更/追加したいです。

さて、あなたがちょうど身体の始めに尋ねたように。 get_header();以外に標準的なフックがあるとは思わない。この機能は通常、ほとんどのテンプレートファイルの先頭にあります。

単一の投稿の一般的な構造は次のようになります。

<?php get_header(); ?>

    // Some content
<?php get_sidebar(); // If your theme has a sidebar ?>

<?php get_footer(); ?>

だからあなたはこれにフックしてあなたのコンテンツを出力することができるはずです。これはあなたのテーマのfunctions.phpまたはプラグインに入ります。

add_action('get_header', 'my_referrer_check');
function my_referrer_check () {
    $referer = wp_get_referer();
    if (  strpos($referer ,'http://wanteddomain.com') !== false ){
        // The rest of your code here
    }
}

これは自動的にあなたのコードをget_headerアクションフックに追加します。

もう1つの解決策は、コードを関数にラップして、必要に応じてその関数をテンプレート内で使用することです。

function my_referrer_check () {
    $referer = wp_get_referer();
    if (  strpos($referer ,'http://wanteddomain.com') !== false ){
        // The rest of your code here
    }
}

my_referrer_check();を使うことであなたはどこにでもあなたのコンテンツを手に入れることができます。

便利な機能

あなたの冒険を征服する過程で、あなたはいくつかの同盟国を必要とするかもしれません。これらの機能は、必要に応じてあなたに役立つかもしれません:

  • ユーザーをリダイレクトするには:wp_redirect('URL-HERE');またはwp_safe_redirect('URL-HERE');の直後にdie();またはexit();が続きます。
  • is_single()is_page()is_home()など、あなたがあなたのテンプレートのどこかに投稿しているかどうかを確認するには.
  • クエリパラメータを取得するには:get_query_var('paremeter-here');
1
Jack Johansson