Personal WP Customization Notes (PWCN)

WordPressで実際に行ったカスタマイズの記録、発生した問題への対処時のメモ、ブロックテーマのカスタマイズなど

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

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変数を変えれば、メニュー内で複数のショートコードを実行させることもできます。

コメントを残す

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

※リンクやURLの挿入されているコメントは無視します

WordPressでショートコードを作るプログラム例
中に入れたブロックすべてをリンク可能にするショートコードの作り方