お問い合わせ

Easy Access Reusable Blocksのショートコード呼び出しでショートコード展開するカスタマイズ

  • URLをコピーしました!

WordPressの再利用ブロックやパターンは仕様がコロコロ変わっていて、今ではパターンという呼び名で統一されて同期する、しないで、使い分ける運用になっています。

再利用ブロックはWordpress単体では使いにくいので、有料テーマでは拡張されていたり、拡張するプラグインがあります。

SWELLのブログパーツは再利用ブロックを利用した機能で、他のテーマにはない便利さを提供しています。

SWELL以外のテーマでブログパーツを使いたいと思ったことは無いでしょうか?

この記事では、SWELL以外のテーマでブログパーツを使う方法をお伝えします。

SWELL以外でもブログパーツを利用したい

SWELL以外のテーマで再利用ブロックを使う場合、プラグインを使うことになるのですが、再利用ブロックのプラグインはあまり需要がないのか、選択肢が少ないです。

そんな中で、Easy Access Reusable Blocksという日本人作者のプラグインがショートコード出力機能があり、使いやすいので気に入っています。

Easy Access Reusable Blocksは、再利用ブロック内部にショートコードがあると、ショートコード出力時にショートコードが展開されません。

これは仕様というか、制限なのですが、少しコードを変更することで対応できますので、この記事でご紹介します。

Easy Access Reusable Blocksのショートコード出力をショートコード展開するカスタマイズ

もとからある[[earb]]というショートコードを削除して、自前の関数を割り当てます。

ポイントは、$reusable_content->post_content;do_blocks(do_shortcode($reusable_content->post_content));に変更していることです。

このカスタマイズは直接プラグインファイルを編集していないので、プラグインが更新されても問題なく利用できます。

remove_shortcode( 'earb' );

add_shortcode( 'earb',function($atts){
		$atts = shortcode_atts(
		array(
			'post_id' => null,
		),
		$atts
	);

	if ( $atts['post_id'] ) {
		$reusable_content = get_post( $atts['post_id'] );
		if ( is_object( $reusable_content ) && property_exists( $reusable_content, 'post_content' ) && 'wp_block' === $reusable_content->post_type ) {
			return do_blocks(do_shortcode($reusable_content->post_content));
		}
	}
} );

まとめ

SWELL以外のテーマでブログパーツを利用したいと思った時に、SWELL作者がリリースしている『Custom Block Patterns』にはショートコード出力機能がありません。

『Easy Access Reusable Blocks』には、ショートコード出力機能があるため、ブログパーツの機能に近い使い方ができます。

しかし、『Easy Access Reusable Blocks』では再利用ブロックにショートコードが含まれるとショートコードが展開されない問題があるので、今回の記事のカスタマイズを組み合わせれば、SWELLのブログパーツのような使い方ができます。

プラグイン名再利用ブロックのショートコード出力
Custom Block Patterns未対応
Easy Access Reusable Blocks対応済み
他の人にもシェアしてね
  • URLをコピーしました!
  • URLをコピーしました!
コメントを閉じる

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

クリックできる目次