アフィリエイト広告をワードプレスで自動表示する(functions.php にベタ書き編)

広告の自動表示サンプルプログラム紹介ページのアイキャッチ

このページでは、アフィリエイト広告を自動表示するサンプルプログラムを紹介します。

このサンプルプログラムを functions.php にコピペすることにより、投稿編集画面のカスタムフィールドの「広告を自動表示する」でチェックをつければ、

広告自動表示の設定を行うカスタムフィールド

その投稿記事のページ表示時に、広告(+広告の紹介文)が自動的に表示されるようになります。

広告を自動表示する様子

この広告はカテゴリやタグ毎に別のものに設定することも可能です(このページでは特にカテゴリ毎に設定する方法に焦点を当てて解説します)。

カテゴリ毎に別の広告を自動表示する様子

こにより、同じカテゴリのページに、設定した広告を一括して自動的に表示することが可能になります。

広告を自動表示したくない場合はカスタムフィールドの「広告を自動表示する」からチェックを外せば非表示にすることも可能です。

同じカテゴリのタグのページに同じ広告を表示したいような場合に是非利用してみてください!

逆に各ページで異なるアフィリエイト広告を貼りたい方にとっては使いどころはないかもしれませんが、ワードプレスのテクニックとしてこんな事ができることを知っておくといずれ役に立つ時が来ると思います!

それではサンプルプログラムを紹介していきたいと思います。

アフィリエイト広告をワードプレスで自動表示するサンプルプログラム

「カテゴリ毎」に同じ広告を自動表示するサンプルプログラムを紹介していきます。

アフィリエイト広告をワードプレスで自動表示するサンプルプログラム

カテゴリ毎にアフィリエイト広告をワードプレスで自動表示するサンプルプログラムは下記のようになります。

これを functions.php にコピペして追記すれば、使用しているテーマに「カテゴリ毎にアフィリエイト広告をワードプレスで自動表示する」仕組みが加わることになります。

/**
 * 記事本文の最後に広告を追加する関数
 *
 * @param in $content : 記事本文.
 */
function my_add_ad( $content ) {
	/* 自動広告表示設定を取得 */
	$display_ad = get_post_meta( get_the_ID(), '_my_add_ad', true );
	if ( 'display' !== $display_ad ) {
		/* 自動広告表示設定が非チェックの場合は記事本文をそのまま return して終了 */
		return $content;
	}

	/* 広告自動表示設定にチェックがついている場合の処理 */

	/* カテゴリのスラッグを取得 */
	$category = get_the_category( get_the_ID() );
	$cat_name = $category[0]->category_nicename;

	/* カテゴリのスラッグに応じて $ad の内容を切り替え */
	switch ( $cat_name ) {
		/* カスタマイズ必要部分ここから */
		case 'sample':
			/* スラッグが 'sample' の場合の $ad を設定 */

			/* '$ad = <<< EOM' から 'EOM;' に表示したい広告紹介文と広告自体を HTML で記述 */
			$ad = <<< EOM
/* ここを広告紹介文と広告自体の HTML で上書き */
EOM;
			break;
		default:
			/* カテゴリスラッグがその他の場合は $ad は空に設定 */
			$ad = '';
			break;
		/* カスタマイズ必要部分ここまで */
	}

	/* 記事本文 $content に 広告の HTML を結合して返却 */
	return $content . $ad;
}

/**
 * カスタムフィールドの設定値を保存する関数
 *
 * @param in $pid : 投稿記事のID.
 */
function my_save_add_ad_setting( $pid ) {
	/* 自動保存の場合はなにもしない */
	if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
		return;
	}

	/* $_POST自体が空の場合は何もしない */
	if ( empty( $_POST ) ) {
		return;
	}

	/* メタデータを更新 */
	update_post_meta( $pid, '_my_add_ad', $_POST['my_add_ad_check'] );
}

/**
 * 広告自動表示設定のカスタムフィールドを表示するHTMLを出力する関数
 */
function my_save_add_ad_field() {
	/* 現在の広告自動表示設定を取得 */
	$display = get_post_meta( get_the_ID(), '_my_add_ad', true );

	if ( 'display' === $display ) {
		/* 表示する設定になっている時はチェックをつけた状態で自動広告表示の設定画面を表示 */
		echo '<input type="checkbox" name="my_add_ad_check" value="display" checked="checked">表示する';
	} else {
		/* 表示する設定になっていない時はチェックをつけていな状態で自動広告表示の設定画面を表示 */
		echo '<input type="checkbox" name="my_add_ad_check" value="display">表示する';
	}
}

/**
 * 広告表示設定カスタムフィールドを追加する関数
 */
function my_add_ad_setting_field() {
	/* 自動広告表示設用うカスタムフィールドの追加 */
	add_meta_box(
		'my_add_ad_setting_id',
		'広告を自動表示する',
		'my_save_add_ad_field',
		'post',
		'side',
		'low',
		null
	);
}

/* 広告自表示用のフック */
add_filter( 'the_content', 'my_add_ad' );

/* カスタムフィールド追加用のフック */
add_action( 'add_meta_boxes', 'my_add_ad_setting_field' );
add_action( 'save_post', 'my_save_add_ad_setting' );

表示するアフィリエイト広告の設定

次は「カテゴリ毎に表示する広告の設定」を行います。

この設定は下記部分を変更することで行うことができます。

/* カテゴリのスラッグに応じて $ad の内容を切り替え */
switch ( $cat_name ) {
	/* カスタマイズ必要部分ここから */
	case 'sample':
		/* スラッグが 'sample' の場合の $ad を設定 */

		/* '$ad = <<< EOM' から 'EOM;' に表示したい広告紹介文と広告自体を HTML で記述 */
		$ad = <<< EOM
/* ここを広告紹介文と広告自体の HTML で上書き */
EOM;
		break;
	/* 広告を増やす場合はここに上記の case から break; をコピペ */
	default:
		/* カテゴリスラッグがその他の場合は $ad は空に設定 */
		$ad = '';
		break;
	/* カスタマイズ必要部分ここまで */
}

設定する箇所は下図で表す二箇所です。

広告の自動表示を行うために設定必要な箇所

表示するカテゴリのスラッグの設定

case 文に続く ‘ 〜 ‘ にはアフィリエイト広告を表示したいカテゴリのスラッグ名を記述します。

スラッグ名はカテゴリの編集ページで調べることができますので、このスラッグ名を、’ 〜 ‘ の間に上書きします。

スラッグの設定

表示する広告の設定

$ad = <<< EOM 〜 EOM; の部分はそのカテゴリのページに表示したい広告の HTML 文を記述します。

例えば A8 なら「広告リンクコード生成」で表示されるリンクの素材のコードをそのまま $ad = <<< EOM 〜 EOM; の間にコピペすれば良いです。

広告の設定

広告の紹介文も付けたい場合は、広告を表示するコードの上側に HTML 文で記述します。

広告の紹介文の設定

HTML で書く必要があるのでちょっと不便…。

例えばこのページの記事の最後に表示している広告の紹介文は下記のように記述しています。

<p>ワードプレス & PHP に興味のある方は「WordPressユーザーのためのPHP入門」がオススメです!!</p>
<p>ワードプレスのどの部分をどのように変更すれば良いかが初心者向けに解説されており、ワードプレスのテーマを変更しながら PHP を学べます。</p>			
<p>PHP を変更することでワードプレスによるページ表示がどんどん変わっていくので、プログラミングを楽しく学ぶことができます!</p>
/* ここに広告の HTML をコピペ(ここでは都合により省略) */

これで表示するカテゴリのスラッグの設定で設定したカテゴリのページに、ここで設定した広告(&紹介文)が表示されるようになります。

広告を表示するカテゴリを増やす場合

広告を表示するカテゴリを増やす場合は、下記の case から break; の部分をコピーし、

	case 'sample':
		/* スラッグが 'sample' の場合の $ad を設定 */

		/* '$ad = <<< EOM' から 'EOM;' に表示したい広告紹介文と広告自体を HTML で記述 */
		$ad = <<< EOM
/* ここを広告紹介文と広告自体の HTML で上書き */
EOM;
		break;

下記の break; と default; の間に貼り付けします。

		break;
	/* 広告を増やす場合はここに上記の case から break; をコピペ */
	default:
		/* カテゴリスラッグがその他の場合は $ad は空に設定 */
		$ad = '';
		break;

後は貼り付けた部分を再度表示するカテゴリのスラッグの設定と表示する表示する広告の設定で紹介した通りに設定すれば、複数のカテゴリに別々のアフィリエイト広告の表示設定を行うことができます。

最後に設定方法をまとめておきます。

広告の設定
  • case の後ろの ‘ 〜 ‘ にカテゴリのスラッグを設定する
  • 直後の $ad <<< EOM 〜 EOM; の間に広告の HTML (+紹介文の HTML)をコピペする
  • カテゴリ&広告の設定を増やしたい場合は case 〜 break; 部分をコピペしてスラッグと広告の設定を行う

サンプルプログラムの動作確認

まずは広告を設定したカテゴリの中のページを表示してみましょう!!

設定した広告が…、

表示されませんね…!

ですが、それでいいんです。初期状態だと表示されないようになっていますので。

続いてそのページの投稿編集画面を開き、下記の「広告を自動表示する」の「表示する」にチェックを付けて、投稿を保存してみてください。

広告自動表示の設定を行うカスタムフィールド

これで、そのページに設定した広告の表示が自動的に行われるようになります。

再度ページを表示すると、記事本文の最後に設定した広告が表示されるようになるはずです。

スポンサーリンク

サンプルプログラムの解説

では簡単にサンプルプログラムでなぜ広告の自動表示ができるのかを簡単に解説しておきたいと思います。

広告の自動表示を行っているのは my_add_ad 関数です。

この関数は下記で the_content フィルターフックにフックしています。

/* 広告自表示用のフック */
add_filter( 'the_content', 'my_add_ad' );

このフィルターフックにフックした関数は、the_content 関数を実行する際に同時に実行されることになります。

基本的に、世の中に出回っているようなテーマでは、この the_content 関数を実行することで記事本文が表示されるようになっているはずです。

the_content にフックした関数では、記事本文が格納された $content を引数として受け取ることが可能であり、この $content に加工を加えたものを return することにより、その加工を加えたデータがページの記事本文として表示されるようになります。

記事本文がフック関数で加工される様子

ですので、 $ad 変数に広告やその紹介文の HTML 分を格納し、さらに下記で元々の記事本文である $content に $ad を結合して return することで、「記事本文」+「広告やその紹介文の HTML」が新たな「記事本文」としてページに表示されることになります。

さらに $ad 変数にはカテゴリ毎に異なる広告の HTML が格納されるように、下記のようにカテゴリのスラッグ名を取得し、スラッグに対する switch 文を利用しています。

/* カテゴリのスラッグを取得 */
$category = get_the_category( get_the_ID() );
$cat_name = $category[0]->category_nicename;

/* カテゴリのスラッグに応じて $ad の内容を切り替え */
switch ( $cat_name ) {
	/* カスタマイズ必要部分ここから */
	case 'sample':
		/* 略 */
	default:
		/* カテゴリスラッグがその他の場合は $ad は空に設定 */
		$ad = '';
		break;
	/* カスタマイズ必要部分ここまで */
}>/code>

このあたりをタグに関するものに置き換えれば、タグの設定に応じて自動表示する広告表示を切り替えることも可能です。

ここまでが自動的に広告やその紹介文が自動的に表示される仕組みです。

ただし、広告の自動表示を行いたくないケースもあると思いましたので、広告を表示するかどうかはカスタムフィールドで設定できるようにしています。

このカスタムフィールドの表示と設定値の保存を行っているのは、my_add_ad_setting_field と my_save_add_ad_field と my_save_add_ad_setting になります。

これらの関数により、投稿記事の編集画面に下のカスタムフィールドが表示されるようになります。

広告自動表示の設定を行うカスタムフィールド

そして、記事本文を加工する my_add_ad 関数内の下記部分でこのカスタムフィールドの設定値を取得し、チェックが付いていない場合は投稿記事をそのまま表示するようにしています。

/* 自動広告表示設定を取得 */
$display_ad = get_post_meta( get_the_ID(), '_my_add_ad', true );
if ( 'display' !== $display_ad ) {
	/* 自動広告表示設定が非チェックの場合は記事本文をそのまま return して終了 */
	return $content;
}

カスタムフィールドについては下記ページで解説していますので、是非こちらのページを参考にしていただければと思います。

カスタムフィールド追加の解説ページアイキャッチ【ワードプレス】テーマの作り方⑪:カスタムフィールドを追加して設定項目を増やす

簡単ですが、以上がサンプルプログラムの解説になります。フックとカスタムフィールドの表示さえ使いこなせれば割とシンプルな作りになっていると思います。

フックを深く理解したい方には下記ページもオススメです!

ワードプレスのフック解説ページのアイキャッチワードプレスのフックとは?使い方は?初心者向けに分かりやすく解説します!

まとめ

このページではアフィリエイト広告をページに自動表示する方法について解説しました。

割とインパクトのある題材だと思いますが、プログラム自体はシンプルに作成することができます!

ただちょっと広告の設定を functions.php で行う必要があるので利便性は低いですね…。

ということで次はこの「アフィリエイト広告の自動表示」をウィジェット or プラグインで実現し、設定が簡単に行えるようにしたものを公開したいと思います!(いつになるかは不明…)

ワードプレス & PHP に興味のある方は「WordPressユーザーのためのPHP入門」がオススメです!!

ワードプレスのどの部分をどのように変更すれば良いかが初心者向けに解説されており、ワードプレスのテーマを変更しながら PHP を学べます。

PHP を変更することでワードプレスによるページ表示がどんどん変わっていくので、プログラミングを楽しく学ぶことができます!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ワードプレスの処理時間は約 0.146 秒です