WordPressの広告の貼り付けはショートコードを使うのが効率的
当ブログはそれなりに広告を貼っているので、文言やバナー画像を一斉に差し替えたい時などに記事にベタ書きだと非常に面倒です。
なので、以下のような広告用のクラスを使ってショートコードで広告を差し込んでいます。
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://spbtc.trade/" rel="nofollow noopener" target="_blank">広告1テキストリンク</a>',
self::TYPE_BANNER => '<a href="https://spbtc.trade/" rel="nofollow noopener" target="_blank"><img src="https://spbtc.trade/img/banner.jpg" alt="広告1バナー"/></a>',
],
'ad2' => [
self::TYPE_TEXT => '<a href="https://spbtc.trade/" rel="nofollow noopener" target="_blank">広告2テキストリンク</a>',
self::TYPE_BANNER => '<a href="https://spbtc.trade/" rel="nofollow noopener" target="_blank"><img src="https://spbtc.trade/img/banner.jpg" alt="広告2バナー"/></a>',
],
];
}
$__adListに広告を配列で追加していきます。
ショートコードを使おうと言うレベルの人なら簡単だと思います。
functions.phpからAdを読み込む
require_once('Ad.php');
new Ad();
記事中にショートコードを埋め込む
[ad name="ad1" type="text"]
[ad name="ad1" type="banner"]
[ad name="ad1" type="text" link_text="リンクテキストを変更"]
link_textオプションでリンクテキストを変更可能。
ショートコードを入れ子にすることも可能です。
サイドバーでショートコードを使いたい場合
functions.phpに以下のように記述します。
add_filter('widget_text', 'do_shortcode');
ブログに既存の広告が大量にある…と言う人も、これから追加する広告だけでもショートコードに差し替えていくと後々楽だと思います。