ナビゲーションブロックでショートコードを動作させる方法(メモ)

公開日:2026(令和8)年1月26日/最終更新日:

WordPress Customize Ideas | Personal WP Customization Notes (PWCN)

サイトの維持や有用なページの紹介を目的として、このページには各所に広告を表示しています。多数の広告が表示され、閲覧しにくいところがあるかも知れませんが、ご協力いただけますようお願いいたします。

WordPressのナビゲーションブロックでは、通常ショートコードは実行されず、ショートコードのまま表示されるようになっていますが、ナビゲーションブロック内に設置した固定ページリンクのタイトルとリンクをショートコードにした上で以下のコードをfunctions.phpへ追加することで、ショートコードを実行させることができるようになります。

/*** ナビゲーションブロック内にある固定ページリンクをショートコードの実行命令と置き換える ***/
function pwcn_do_shortcode_render_menu_block($block_content, $block){
	//ブロック名と固定ページのリンクが同じかどうかで条件分岐
	if (isset($block['blockName']) && 'core/navigation-link' === $block['blockName']) {
		//リンクが [sample-shortcode]という文字列であればショートコードを再実行
		if (strpos($block_content, ' [sample-shortcode]') !== false) {
			$shortcode = do_shortcode(' [sample-shortcode]');
			return $shortcode;
		}
	}

	return $block_content;
}
add_filter('render_block', 'pwcn_do_shortcode_render_menu_block', 10, 2);

コード内にコメントを入れているのでお分かりかと思いますが、上記のコードでは「sample-shortcode」という名前のショートコードが固定ページリンクブロック(core/navigation-link)の名前とリンク先に共通して存在するブロックを見つけ、存在すればrender_blockへフックさせて再実行させる(今回の場合はdo_shortcode()関数を使ってショートコードを再実行させる)という処理をするもので、コード内の「sample-shortcode」を実行させたいショートコード名に変えれば動作します。

別のユーザー定義関数で複製してショートコード名を変えるか、if(isset…{}の部分を複製して、Sshortcode変数を変えれば、メニュー内で複数のショートコードを実行させることもできます。

, , , ,
Lolipop ServerMoshimo Ad x-serverMoshimo Ad

WordPress Customize Ideas | Personal WP Customization Notes (PWCN)
サイトヘルスに表示される情報をショートコードで表示させるコード例