賢威8で記事下に共通コンテンツを挿入する方法

賢威8はウィジェットに『投稿・固定ページのコンテンツ後エリア』というものがあります。
記事下に共通のコンテンツを表示したいとき、役立ちそうですね。

しかし…

賢威8 投稿・固定ページのコンテンツ後エリア

コメントの下に表示されてしまいます。

そこじゃないんです。

賢威8 記事直下

記事の直下に表示したいんです!

そこで今回は、簡単なプラグインを自作して、賢威8の記事下に共通コンテンツを表示する方法をお伝えします。

※プラグインを自作するのは難しく感じますが、実はfunction.phpを変更するより簡単です。ぜひチャレンジしてみてください。

この記事は、次の記事の内容を賢威8向けにアレンジしたものです。

まずは共通コンテンツを作る

賢威8には共通コンテンツを作成して、記事中にショートコードで呼び出すことができる機能があります。
今回はその機能を利用して、共通コンテンツの内容を修正するだけで、好きなように記事下の表示内容を変更できるようにしてみます。

(1) メニュー:共通コンテンツ > 新規追加

賢威8 共通コンテンツ

(2) タイトルと表示するメッセージ(コンテンツ)を入力

賢威8 共通コンテンツ タイトル 表示するメッセージ
※旧エディタを使用している場合、画面が異なります

(3) ショートコードをメモ(コピペ)して公開

賢威8 共通コンテンツ  ショートコード

賢威8の記事下にメッセージを挿入するプラグイン

次はいよいよ、賢威8の記事下にメッセージを挿入するプラグインを自作していきます。

自作プラグインの準備

まずは自作プラグインのひな型をWordPressにインストールします。

次の記事で紹介しているzipファイルをダウンロードして、WordPressに追加するだけです。

上の記事はすべて読まなくても大丈夫ですが、『自作コードを編集するには?』は読んだ方がいいかもしれません。

すでにインストールしてある場合は、そちらを使用してください。

記事下にメッセージを挿入する基本コード

PHP
add_filter('the_content', 'my_the_content_filter', 12);
function my_the_content_filter($content){
	if(is_single()){
		$output = do_shortcode('[cc id=XXXX]');
		return $content . $output;
	}
	return $content;
}

このコードはWordPressのフィルター機能を利用しています。

1行目のadd_filterは、ある関数の実行前に、呼び出す関数をフック(登録)します。
ここではthe_contentという記事内容の表示関数を実行する前に、my_the_content_filterという関数を呼び出すように設定しています。

3行目のis_single()は、投稿記事かどうか判定しています。
個別ページを含める場合は、次のようにします。

PHP
// 投稿ページと個別ページ
	if(is_single() || is_page()){

// 
個別ページのみの場合
	if(is_page()){

4行目は、共通コンテンツで登録したショートコードを実行して、メッセージhtmlを取り出しています。
XXXXは、メモした数字に置き換えてください。

5行目は記事内容($content)の後に、取り出したhtmlを追加して終了です。
7行目は投稿ページ以外のときに処理され、記事内容($content)に手を加えずに終了しています。

実行結果

上のコードを自作用プラグインにコピペして保存すると、次のように記事下にメッセージを表示されます。

賢威8 共通コンテンツ 記事下メッセージ表示結果

今後は共通コンテンツを変更するだけで、記事下のメッセージを変更できるので、とても楽になりました。

アレンジ:記事の前に表示する

今度は、先ほどのコードを少しアレンジして記事の前にメッセージを追加してみます。

次のように変更してみてください。

PHP

	return $output . $content;

その結果、アイキャッチ画像の下に、共通コンテンツが表示されました。

賢威8 共通コンテンツ アイキャッチの後に追加

少し使いにくい位置ですが、記事を読んだ人全員に向けたメッセージなどを表示するなどの工夫ができそうです。

ちなみに次のようにすると、記事の前後に別々の共通コンテンツを表示することができます。

PHP
add_filter('the_content', 'my_the_content_filter', 12);
function my_the_content_filter($content){
	if(is_single()){
		$output_mae = do_shortcode('[cc id=XXXX]');
		$output_usiro = do_shortcode('[cc id=XXXX]');
		return $output_mae . $content . $output_usiro;
	}
	return $content;
}

ぜひ試してみてください。