WordPressで記事ページにだけ表示するショートコード

2019年4月23日WordPress

ウィジェットなどで記事ページにだけウィジェット等でPHP処理を読み込むショートカットの作成方法です

記事ページでのみ読み込みさせるにはis_single()を利用しての条件分岐が可能です

サンプルコードではWordPressデフォルトである「テキスト」ウィジェットでもショートコードとして表示可能にしています

記事ページにだけ表示するショートコード

functions.php

function test_function(){
	if(is_single()){
		ob_start();
		echo 'WordPress';
		return ob_get_clean();
	}
}

//ショートコードの登録
add_shortcode('test', 'test_function');

//テキストウィジェットでショートコードが動く様にする
add_filter('widget_text', 'do_shortcode');

ウォジェットのテキスト・カスタムHTMLブロックなど

[test]

上記はショートコードを利用していますが、プラグインなどでウィジェットでのPHPを使える様にしている場合はそのまま記述できます


if(is_single()){
	echo 'WordPress';
}

特定の記事にのみ表示させるショートコード

is_single()に因数を付ける事で特定の記事を指定できます

記事idで指定する方法

functions.php

function test_function(){
	if(is_single(1)){
		ob_start();
		echo 'WordPress';
		return ob_get_clean();
	}
}

//ショートコードの登録
add_shortcode('test', 'test_function');

//テキストウィジェットでショートコードが動く様にする
add_filter('widget_text', 'do_shortcode');

ウォジェットのテキスト・カスタムHTMLブロックなど

[test]

記事タイトルで指定する方法

functions.php

function test_function(){
	if(is_single('記事タイトル')){
		ob_start();
		echo 'WordPress';
		return ob_get_clean();
	}
}

//ショートコードの登録
add_shortcode('test', 'test_function');

//テキストウィジェットでショートコードが動く様にする
add_filter('widget_text', 'do_shortcode');

ウォジェットのテキスト・カスタムHTMLブロックなど

[test]

記事スラッグで指定する方法

functions.php

function test_function(){
	if(is_single('entry-slug')){
		ob_start();
		echo 'WordPress';
		return ob_get_clean();
	}
}

//ショートコードの登録
add_shortcode('test', 'test_function');

//テキストウィジェットでショートコードが動く様にする
add_filter('widget_text', 'do_shortcode');

ウォジェットのテキスト・カスタムHTMLブロックなど

[test]

複数の条件を指定する方法

オプション因数を配列にする事で複数条件での分岐が可能です
例ではIDが2または4、8の記事にのみ「WordPress」と表示されます
functions.php

function test_function(){
	if(is_single(array( 2, 5, 8 )){
		ob_start();
		echo 'WordPress';
		return ob_get_clean();
	}
}

//ショートコードの登録
add_shortcode('test', 'test_function');
//テキストウィジェットでショートコードが動く様にする
add_filter('widget_text', 'do_shortcode');

ウォジェットのテキスト・カスタムHTMLブロックなど

[test]

2019年4月23日WordPressWordPressショートコード

Posted by ヨウスケ