楽天セール開催中!ポイント最大11倍! セール会場へ

WordPress│本文に特定のURLがある場合に文言を表示するカスタマイズ│PR表記

本記事ではアフィリエイト広告を利用しています。

広告を含む記事で、指定した文字列が本文HTMLにあるときに広告表記を追加する方法です。

このコードはリンク先や広告契約の有無を判定しません。登録したURLの文字列を、大文字・小文字を区別して部分一致で探します。説明文やコード例に同じ文字列があっても表示対象になります。

自動判定は表示漏れを防ぐ補助として使います。短縮URLや表記ゆれ、登録外の広告URL、URLを含まない広告案件もあるため、広告を含む記事は個別に確認し、必要な表記を手動で補ってください。

ということで、管理画面でURLとHTMLを記載して、本文に該当する文言があれば、冒頭に文言を表示するようにしてみました。

サンプル

管理画面ページ

URLやHTMLを設定する専用管理画面ページのサンプル表示。

実際の出力結果

本文に該当する文言がある場合に冒頭へ文言が表示された実際の出力結果。

本記事では本文に特定のURLがある場合に文言を表示するカスタマイズ方法を紹介します。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

WordPressで本文に特定のURLがある場合に文言を表示するカスタマイズ

変更前のコードと設定を保存し、まず検証環境で確認してください。同名の関数がある場合は重複登録せず、既存コードを置き換えます。

PHPは子テーマのfunctions.phpのPHP内、またはPHPスニペットのどちらか一方へ追加し、管理権限のある利用者が専用設定画面でURL文字列と表示文を保存します。ファイルを編集する場合は、管理画面が開けなくなっても原本へ戻せる手段を用意してください。

functions.php

子テーマの functions.php に下記のコードを追記します。管理画面から編集する場合は「外観 > テーマファイルエディター」です(ブロックテーマでは「ツール > テーマファイルエディター」に移動します)。親テーマへ直接書くとテーマ更新で消えるため、子テーマか下記のプラグインを使ってください。

WordPress管理画面の外観メニューにあるテーマファイルエディター
外観メニューの現行表示(2026年10月12日撮影)

エラーが怖い場合はCode Snippetsのプラグインを入れてその中にfunctions.phpのコードを記載しましょう。

function pr_custom_theme_menu() {
    add_options_page(
        '広告表記設定',
        '広告表記設定',
        'manage_options',
        'pr-theme-settings',
        'pr_theme_settings_page'
    );
}
add_action('admin_menu', 'pr_custom_theme_menu');

function pr_theme_settings_page() {
    ?>
    <div class="wrap">
        <h2>広告表記設定</h2>
        <form method="post" action="">
            <?php
            wp_nonce_field('pr_theme_settings_save', 'pr_theme_settings_nonce');
            $urls = get_option('pr_urls', '');
            $html = get_option('pr_html', '');
            ?>
            <table class="form-table">
                <tr valign="top">
                    <th scope="row">URLs</th>
                    <td><input type="text" name="pr_urls" value="<?php echo esc_attr($urls); ?>" size="100"></td>
                </tr>
                <tr valign="top">
                    <th scope="row">カスタムHTML</th>
                    <td><textarea name="pr_html" rows="10" cols="100"><?php echo esc_textarea($html); ?></textarea></td>
                </tr>
            </table>
            <?php submit_button(); ?>
        </form>
    </div>
    <?php
}

function pr_save_theme_settings() {
    if (isset($_POST['pr_theme_settings_nonce']) && wp_verify_nonce($_POST['pr_theme_settings_nonce'], 'pr_theme_settings_save')) {
        if (current_user_can('manage_options')) {
            if (isset($_POST['pr_urls'])) {
                update_option('pr_urls', sanitize_text_field(stripslashes($_POST['pr_urls'])));
            }
            if (isset($_POST['pr_html'])) {
                update_option('pr_html', wp_kses_post(stripslashes($_POST['pr_html'])));
            }
        }
    }
}
add_action('admin_init', 'pr_save_theme_settings');

function pr_add_custom_html($content) {
    if (!is_singular() || !in_the_loop() || !is_main_query()) {
        return $content;
    }
    $custom_urls = explode(',', get_option('pr_urls', ''));
    foreach ($custom_urls as $url) {
        $trimmed_url = trim($url);
        if (!empty($trimmed_url) && strpos($content, $trimmed_url) !== false) {
            $content = get_option('pr_html', '') . $content;
            break;
        }
    }
    return $content;
}
add_filter('the_content', 'pr_add_custom_html');

通常の個別ページのメインループを対象にする条件です。is_singular()なので投稿だけでなく固定ページやカスタム投稿の個別ページも含み、通常のアーカイブやRSSフィードは対象外です。保存するHTMLはwp_kses_post()で制限されるため、scriptタグなどは保存されません。このフィルターの優先度は既定の10で、WordPress標準のショートコード展開(優先度11)より前です。ショートコードや後段のプラグインが生成する広告リンクは検出できない場合があります。

管理画面の設定

上記のコードを保存して、管理画面を更新すると

設定 > 広告表記設定という項目が表示されますので、その画面を開きます。項目名は上のコードの add_options_page に渡した文字列と同じです。

設定メニューに追加された広告表示設定の管理画面。

URLsには対象のURLを記載します。

複数対応も可能です、URLをカンマで区切って入力しましょう。

https://www.amazon.co.jp/, https://px.a8.net/

カスタムHTMLには記事冒頭に表示したい文言を表記します。

<p class="is-style-icon_pen">本記事ではアフィリエイト広告を利用しています。</p>

設定は、以上です。

確認

あとはURLが記載されている記事を開いてみましょう。

一致する文字列がある記事とない記事を用意し、保存後の公開ページで表記の有無と表示位置を確認してください。説明用URLにも反応すること、ショートコード由来のリンクを見逃す場合があることも確かめます。

既に本文やテーマ機能で広告表記を入れている場合、このコードはその重複を判定しません。表示が二重にならないよう、利用する表示方法を整理してください。

対象URLが記載された記事の冒頭に文言が表示されている確認画面。

掲載の管理画面と出力結果の画像は2023年9月に撮影したもので、現在の WordPress 管理画面とは見た目が異なる場合があります。

このコードは記事個別ページでの表示を目的にしています。アーカイブやRSSフィードでの挙動、他のプラグインが本文を整形する環境での動作、マルチサイトでの権限差は確認していません。

戻すときは、追記した4つの関数と add_action / add_filter の登録を外します。保存済みのオプション(pr_urls・pr_html)はコードを外しても残るため、不要なら設定画面で空にしてから外してください。

まとめ

ステルスマーケティング告示は2023年10月1日に施行されています。消費者庁のQ&A(Q13)では、冒頭に表記があっても、文字の大きさや色、表示全体から広告であることが明瞭かを判断すると説明しています。このコードの導入だけで法令への適合を保証するものではありません。読者が広告であると分かる文言・位置・見やすさを確認してください。

ぜひこのカスタマイズも参考にしてみてください。

このページにはAmazonへの商品リンクと、本文に記載した広告表記があります。記事に表示があることだけでは、自動挿入の動作確認にはなりません。

ちなみにSEOライティングでおすすめできる書籍です。

著:マクリン(新井涼太), 著:サンツォ(吉岡智将)
¥1,830(2026/09/22 18:42時点 | Amazon調べ)
\楽天セール開催中!ポイント最大11倍!/
楽天市場
\ポイント5%還元!/
Yahooショッピング

アフィリエイト広告を含む記事の販売・購読のしくみはアフィリエイト付き有料記事のサブスクリプションについて、有料部分の作り方は有料記事の作成方法も参照してください。

関連コードはGitHubのMOTOKI-LLC/WAZA-codeにもありますが、本文との同期は未確認です。導入時はこのページの条件と注意点を併せて確認してください。

広告表記設定のLocal画面例

2026年10月13日に、新規Local環境(WordPress 7.1.3、PHP 8.1.23、Twenty Twenty-Five 1.5)へ、このページの掲載コードを追加して設定画面を撮影しました。設定値は架空URLのexample.invalidと架空の広告表記文です。実際の広告IDや本番設定は使用していません。

設定メニューの「広告表記設定」ではURLs欄、カスタムHTML欄、保存ボタンを確認できます。今回は画面の表示と撮影のみで、入力やSave Changesは操作していません。この画像だけで、公開記事への挿入や保存・権限別の動作を確認したことにはなりません。

ブロックテーマのこのLocal環境では、Theme File Editor(テーマファイルエディター)の入口はTools(ツール)の配下にありました。写真はメニューの位置だけを示します。ファイルエディターを開いての編集・保存はしていません。旧画像は当時の例として残しています。

設定 > 広告表記設定のLocal表示。URL・カスタムHTMLは架空データで、保存ボタンは操作していません。
設定 > 広告表記設定のLocal表示。URL・カスタムHTMLは架空データで、保存ボタンは操作していません。 2026年10月13日Local確認。画像をクリックすると原寸で確認できます。
Twenty Twenty-Fiveを使ったLocal環境のTools配下。Theme File Editorの入口の位置を確認したもの。
Twenty Twenty-Fiveを使ったLocal環境のTools配下。Theme File Editorの入口の位置を確認したもの。 2026年10月13日Local確認。画像をクリックすると原寸で確認できます。
  • URLをコピーしました!

実装を任せたい方へ

WordPressのカスタマイズ代行

ブロックの追加、テーマの改修、管理画面の調整など、記事で紹介している内容の実装を承ります。1時間 ¥8,000〜(税込)。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次