執筆者ごとにAdSense広告を出し分ける!WordPressショートコードをウィジェットに入れて使います

執筆者Aと執筆者Bで違う内容を表示する方法

こんにちは! ヨス(プロフィールはこちら)です。

WordPressのブログやサイトで、複数のライターが執筆するという状況がありますよね。

そんなとき「このライターの記事にはこの表示をしたい」といった希望はありませんか?

たとえば、Aさんの記事にはAさんのAdSense広告を入れたい……といった要望です。

本記事では「functions.php」にコードを追加してショートコードを作成し、ウィジェットにショートコードを追加する方法を紹介します。

執筆者によって情報を出し分けるPHPコード

では、執筆者によって情報を出し分けるPHPコードを紹介します。

WordPressテーマは STORK19 を使用

「1人」と「そのほかの人」でコードを出し分ける場合

まずは「1人」と「その他の人」でコードを出し分ける場合のPHPコードです。

サイトの執筆者が2名のときはこちらのコードを使いましょう。

/* ■ 「1人」と「そのほかの人」でコードを出し分ける場合
-------------------------------------------------------------- */

function display_adsense_one_ad_shortcode($atts) {
    // 現在の投稿の執筆者IDを取得
    $post_id = get_the_ID();
    $post_author_id = get_post_field('post_author', $post_id);

    // 執筆者IDが3の場合とそれ以外の場合で異なる出力を生成
    $output = ($post_author_id == 3) ? '
    ここに執筆者IDが「3」の人のアドセンスコード
    ' : '
    ここにそれ以外の人用のアドセンスコード
    ';

    return $output;
}
add_shortcode('display_adsense_one_ad', 'display_adsense_one_ad_shortcode');

ショートコードの[display_adsense_one_ad]を使って出力するように書いています。

「複数の人」と「そのほかの人」でコードを出し分ける場合

続いて「複数の人」と「その他の人」でコードを出し分ける場合のPHPコードです。

たとえばAさん、Bさん、Cさんがいて、この3人とそのほかの人で内容を変える場合など。

/* ■ 「複数の人」と「そのほかの人」でコードを出し分ける場合
-------------------------------------------------------------- */

function display_adsense_plural_ad_shortcode($atts) {
    // 現在の投稿の執筆者IDを取得
    $post_id = get_the_ID();
    $post_author_id = get_post_field('post_author', $post_id);

    // 執筆者IDが3、4、5の場合とそれ以外の場合で異なる出力を生成
    if (in_array($post_author_id, array(3, 4, 5))) {
        // 執筆者IDが3、4、5の場合のアドセンスコード
        $output = '
        ここに執筆者IDが「3」「4」「5」の人のアドセンスコード
        ';
    } else {
        // それ以外の場合のアドセンスコード
        $output = '
        ここにそれ以外の人用のアドセンスコード
        ';
    }

    return $output;
}
add_shortcode('display_adsense_plural_ad', 'display_adsense_plural_ad_shortcode');

ショートコードの[display_adsense_plural_ad]を使って出力するように書いています。

「Aさん」「Bさん」「Cさん」と「そのほかの人」でコードを出し分ける場合

最後に「Aさん」「Bさん」「Cさん」と「そのほかの人」でコードを出し分ける場合のPHPコードです。

「Aさん」「Bさん」「Cさん」それぞれに違うものを表示させ、この3人以外には別の内容を表示させたいときに使います。

/* ■ 「Aさん」「Bさん」「Cさん」と「そのほかの人」でコードを出し分ける場合
-------------------------------------------------------------- */

function display_adsense_each_ad_shortcode($atts) {
    // 現在の投稿の執筆者IDを取得
    $post_id = get_the_ID();
    $post_author_id = get_post_field('post_author', $post_id);

    // 執筆者ごとに異なるアドセンスコードを設定
    $adsense_codes = array(
    3 => '
    ここに執筆者IDが「3」の人のアドセンスコード
    ',
    4 => '
    ここに執筆者IDが「4」の人のアドセンスコード
    ',
    5 => '
    ここに執筆者IDが「5」の人のアドセンスコード
    ',
    );

    // 執筆者IDに対応するアドセンスコードを取得
    $output = isset($adsense_codes[$post_author_id]) ? $adsense_codes[$post_author_id] : '
    ここにそれ以外の人用のアドセンスコード
    ';

    return $output;
}
add_shortcode('display_adsense_each_ad', 'display_adsense_each_ad_shortcode');

ショートコードの[display_adsense_each_ad]を使って出力するように書いています。

【おまけ】単に記事の合間に入れたいとき

おまけですが、単に記事の合間になにかを表示させたいときは次のコードでオッケーです。

/* ■ 記事中アドセンス
-------------------------------------------------------------- */
function display_adsense_ad_shortcode() {
    return '
    ここにアドセンスコードを入れる
    ';
}
add_shortcode('ad1', 'display_adsense_ad_shortcode');

ショートコードの[ad1]を使って出力するように書いています。

同じような領域を複数作りたい場合は、次のようにコードの後ろに違う数字を入れるとオッケーですよ。

/* ■ 記事中アドセンス
-------------------------------------------------------------- */
function display_adsense_ad2_shortcode() {
    return '
    ここにアドセンスコードを入れる
    ';
}
add_shortcode('ad2', 'display_adsense_ad2_shortcode');

こんな感じで、「ad3」「ad4」のように変えていけばいくらでも作れます。

本記事で紹介している方法の手順

あまり詳しくない人のために、本記事で紹介している方法の手順を紹介していきます。

執筆者IDを調べる

まずは、執筆者IDを調べましょう。話はそれからだ!

左サイドメニューの「ユーザー」を押すと、執筆者一覧が出るので「ID」の欄を見てみましょう。

執筆者IDを調べる
執筆者IDを調べる

基本的には最初に追加された執筆者のIDは「1」で、2番目なら「2」になっています。

本記事で紹介しているコード内の「ID」のところにこの番号を入力します。

functions.phpにコードをコピペする

続いて、functions.phpにコードをコピペします。

サイドメニューの「外観」→「テーマファイルエディター」を押すと次の画面になります。

コードをコピペする
コードをコピペする

この画面の右側にある「テーマのための関数(functions.php)」というところをクリックして、本記事で紹介しているコード(執筆者IDを入れたもの)をコピペしましょう。

functions.phpの一番下にペーストすればオッケーです。

必ず、元のコード全部をメモ帳などにコピペして簡易なバックアップを残してからやりましょう。

ウィジェットにショートコードを記述する

最後にウィジェットに「カスタムHTML」を追加して、その中にショートコードを書きましょう。

次のようにやります。

ウィジェットに「カスタムHTML」をドラッグ&ドロップ
ウィジェットに「カスタムHTML」をドラッグ&ドロップ

そして、ウィジェット内の「カスタムHTML」の欄に本記事で紹介している「ショートコード」をコピペしてください。

これで完了です。

【補足】複数人の「AdSense」を1つのサイトに入れるなら

複数の人のAdSenseを1つのサイトに入れるなら、「ads.txt」に他の人のコードも記載する必要があります。

こちらのように、改行をして2つ続けるだけです。

google.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0
google.com, pub-1111111111111111, DIRECT, f08c47fec0942fa0

3人の場合は同じように改行をして追記するだけですよ。

まとめ

本記事で紹介した方法で、執筆者によって別々の内容を出力できます。

わたしの場合はGoogle AdSenseの出し分けにつかっていますよ。

ちなみに、どのコードもChatGPTに書かせました。すごい時代になったものだ……。