プラグインを使わずにWordPressのショートコードで広告を管理する方法

WordPressの広告の貼り付けはショートコードを使うのが効率的

WordPressで広告を貼っていると文言やバナー画像を一斉に差し替えたい時などがあると思いますが、

記事にHTMLをベタ書きしているとかなり面倒です。

以下のような広告用のクラスを用意して、ショートコードで広告を入れておくと楽に広告の差し替えができます。

Ad.php

<?php
class Ad
{

    const TYPE_TEXT = 'text';
    const TYPE_BANNER = 'banner';

    const ARG_NAME = 'name';
    const ARG_TYPE = 'type';
    const ARG_LINK_TEXT = 'link_text';

    const LINK_TEXT_REGEXP = '/>(.*?)</';

    public function __construct()
    {
        add_shortcode('ad', [$this, 'display']);
    }

    public function display($args)
    {
        $attrs = shortcode_atts([self::ARG_NAME => '', self::ARG_TYPE => self::TYPE_TEXT, self::ARG_LINK_TEXT => ''], $args);
        $content = '';
        if (isset($this->__adList[$attrs[self::ARG_NAME]][$attrs[self::ARG_TYPE]])) {
            $content = do_shortcode(shortcode_unautop($this->__adList[$attrs[self::ARG_NAME]][$attrs[self::ARG_TYPE]]));
            // for link_text option
            if (!empty($attrs[self::ARG_LINK_TEXT])) {
                if (preg_match(self::LINK_TEXT_REGEXP, $content, $linkText)) {
                    $content = str_replace($linkText[1], $attrs[self::ARG_LINK_TEXT], $content);
                }
            }
        }

        return $content;
    }

    private $__adList = [
        'ad1' => [
            self::TYPE_TEXT => '<a href="https://spfx.jp/" rel="nofollow noopener" target="_blank">広告1テキストリンク</a>',
            self::TYPE_BANNER => '<a href="https://spfx.jp/" rel="nofollow noopener" target="_blank"><img src="https://spfx.jp/img/banner.jpg" alt="広告1バナー"/></a>',
        ],
        'ad2' => [
            self::TYPE_TEXT => '<a href="https://spfx.jp/" rel="nofollow noopener" target="_blank">広告2テキストリンク</a>',
            self::TYPE_BANNER => '<a href="https://spfx.jp/" rel="nofollow noopener" target="_blank"><img src="https://spfx.jp/img/banner.jpg" alt="広告2バナー"/></a>',
        ],
    ];
}



広告は$__adListに配列で追加することで機能。
プラグインを使わずにショートコードで広告を管理したい、と言うレベルの人なら特に難しくはないかと。

functions.phpからAdを読み込む

require_once('Ad.php');
new Ad();

記事中にショートコードを埋め込む

link_textオプションでリンクテキストを変更可能。

入れ子のショートコードにも対応しています。

サイドバーでショートコードを使いたい場合

functions.phpに以下のように記述。

add_filter('widget_text', 'do_shortcode');

ブログに既存の広告が大量にある…と言う人も、

これから追加していく広告だけでもショートコードに差し替えておくと後々楽だと思います。

WordPress関連記事



サイトについて

スマートフォンで海外FX&ビットコイン取引をする方法の解説。TariTali推し。

検索

カテゴリー