WordPress Contact Form 7 を使ったアフィリエイト成果報酬コードの設定方法(コンバージョンタグ設置)

広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

概要説明

アフィリエイトの成果用のコンバージョンタグをプラグイン無しで設定するカスタマイズ。特定のパラメーターが設定されている場合のみcookieを使用してWordPress Contact Form 7 にてアフィリエイト対応が可能です

functions.php
/*----------------------------------------------------
 GETパラメーターにてアフィリエイトリンクからの遷移を判定
----------------------------------------------------*/
if ( ! function_exists( 'set_affiliate_cookie' ) ) {
    function set_affiliate_cookie() {
        if ( is_admin() || ! isset( $_GET['affiliate'] ) ) {
            return;
        }
        // ランダムなユニークコード(英小文字と数字の 10 文字)
        $code = strtolower( wp_generate_password( 10, false, false ) );

        // 1 日有効・サイト全体のパス・JavaScript からは読ませない
        setcookie( 'affiliate', $code, array(
            'expires'  => time() + DAY_IN_SECONDS,
            'path'     => COOKIEPATH,
            'domain'   => COOKIE_DOMAIN,
            'secure'   => is_ssl(),
            'httponly' => true,
            'samesite' => 'Lax',
        ) );

        // パラメーターを外した URL へ戻す
        wp_safe_redirect( remove_query_arg( 'affiliate' ) );
        exit;
    }
    // ヘッダーを送る前に動かす
    add_action( 'template_redirect', 'set_affiliate_cookie' );
}

メール本文に発行したユニークコードを表示させる

functions.php
/*----------------------------------------------------
 Contact Form 7 にてユニークコードをメールに記載できるようにする
----------------------------------------------------*/
if ( ! function_exists( 'get_affiliate_code' ) ) {
    // cookie のユニークコードを読む(形が違えば空にする)
    function get_affiliate_code() {
        $code = isset( $_COOKIE['affiliate'] ) ? (string) wp_unslash( $_COOKIE['affiliate'] ) : '';
        return preg_match( '/\A[a-z0-9]{10}\z/', $code ) ? $code : '';
    }
}

if ( ! function_exists( 'get_page_code_form_tag_handler' ) ) {
    function add_custom_form_tags() {
        wpcf7_add_form_tag( 'affiliate_code', 'get_page_code_form_tag_handler' );
    }

    function get_page_code_form_tag_handler( $tag ) {
        return '<input type="hidden" name="affiliate_code" value="' . esc_attr( get_affiliate_code() ) . '" />';
    }

    add_action( 'wpcf7_init', 'add_custom_form_tags' );
}

[affiliate_code]

Contact Form 7 お問い合わせフォーム設定画面に上記コードを隠し項目として設定することで発行したユニークコードをメール本文に表示させることができるようになります

WordPress Contact Form 7 を使ったアフィリエイト成果報酬コードの設定方法(コンバージョンタグ設置)

[affiliate_code]

上記コードを同様にメール本文の設定画面に記載することでメール本文内にユニークコードが表示されます

Contact Form 7 にて正常に送信できた場合にサンクスページを表示させるように設定

成果用の通信コードを表示させるショートコード

functions.php
/*----------------------------------------------------
 アフィリエイト成果通信用コード表示ショートコード
----------------------------------------------------*/
if ( ! function_exists( 'echo_affiliate_html' ) ) {
    function echo_affiliate_html() {
        $code = get_affiliate_code();
        if ( '' === $code ) {
            return '';
        }
        // アフィリエイト用の専用コード内にユニーク文字列を入れて表示
        return '<script src="' . esc_url( add_query_arg( 'key', $code, 'https://xxxx.com/' ) ) . '"></script>';
    }
    add_shortcode( 'echo_affiliate_html', 'echo_affiliate_html' );

    // cookie を消すのは、ヘッダーを送る前(サンクスページを開いたとき)に行う
    function delete_affiliate_cookie() {
        if ( is_page( 'thanks' ) && isset( $_COOKIE['affiliate'] ) ) { // thanks はサンクスページのスラッグに合わせる
            setcookie( 'affiliate', '', time() - HOUR_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN );
        }
    }
    add_action( 'template_redirect', 'delete_affiliate_cookie' );
}

以前のコードは、呼んでいる関数の名前が定義と違っていて、?affiliate= 付きで開くとエラーで止まる状態でした。cookie の値をそのまま画面に出していた所(悪いスクリプトを埋め込まれるおそれ)と、ショートコードの中で cookie を消していた所(効かない)もあわせて直しました(2026/10/18・作業環境で、リンクから来たときに cookie を付けて元の URL へ戻ること・形の違う値は出さないことを確かめています)。

サンクスページに成果用の通信コードをショートコードで表示させる

[echo_affiliate_html]

にて記事編集ページからショートコードを設定するかPHPからショートコードを使用する場合は下記のように記述して使用します

<?php echo do_shortcode('[echo_affiliate_html]'); ?>

WordPress Developer Resources

関連機能

  1. WordPress お問合せフォームの郵便番号に入力したら住所を自動で入力する機能を追加 ( Contact Form 7 )

  2. WordPress 特定の固定ページだけreCAPTCHAを有効にする ( Contact Form 7使用 )

  3. WordPress REST API を無効化 ( 管理者ログイン時、Contact Form 7 プラグイン利用時は有効 )

サイドバー

よく使うカスタマイズ

最近の記事

Profile

PAGE TOP