MENU

apply_shortcodes()

apply_shortcodes() は、WordPress 5.4 以降に登場した関数で、投稿やページだけでなく、任意の文字列内のショートコードを解析・展開するために使用します。

do_shortcode() と機能は同じですが、より命名が直感的であり、今後は apply_shortcodes() の使用が推奨されています。

目次

機能の説明

このテンプレートタグは、文字列内のショートコードをパースして、その出力に置き換える関数です。通常の投稿本文以外の場所、例えばウィジェット、カスタムフィールド、オプションなどでもショートコードを機能させたいときに使います。¥

シンプルなコード例

echo apply_shortcodes( 'この中に [shortcode] が含まれています。' );

[shortcode] に対応するショートコード関数が登録されていれば、その出力に変換されて表示されます。

使い方の説明

基本構文

apply_shortcodes( string $content ): string

引数

引数説明
$contentショートコードを含む文字列

使用例

add_shortcode( 'hello', function() {
  return 'こんにちは、世界!';
} );

$text = '挨拶:[hello]';
echo apply_shortcodes( $text );
// 結果: 挨拶:こんにちは、世界!

一緒に使うことが多い関連タグ

add_shortcode()

add_shortcode( 'current_year', function() {
  return date('Y');
} );
  • 任意のショートコードを登録するための関数
  • apply_shortcodes() とセットで使うことで、動的なテキストを生成できる

do_shortcode()

echo do_shortcode( '[current_year]' );
  • 機能的には apply_shortcodes() と同等
  • do_shortcode() は旧来の関数だが、現在も使用可能
  • 新しいテーマやプラグインでは apply_shortcodes() の方が推奨される

shortcode_exists()

if ( shortcode_exists( 'hello' ) ) {
  echo apply_shortcodes( '[hello]' );
}
  • ショートコードが登録されているかをチェック
  • フロントエンドでのエラー防止に役立つ

追加情報で取得したい場合

do_shortcode() との比較

// 旧方式
echo do_shortcode( '[shortcode]' );

// 新方式(推奨)
echo apply_shortcodes( '[shortcode]' );
  • 機能は全く同じ
  • 命名がわかりやすい apply_shortcodes() を推奨

カスタムフィールドにショートコードを適用したい場合

$content = get_post_meta( get_the_ID(), 'custom_field', true );
echo apply_shortcodes( $content );

ショートコードを保存したカスタムフィールドなどにも展開可能

このテンプレートタグを利用してのカスタマイズ

ウィジェットタイトルや説明にショートコードを反映

$widget_title = get_option( 'custom_widget_title' );
echo apply_shortcodes( $widget_title );

ACF などのプラグインと連携

$text = get_field( 'text_with_shortcode' );
echo apply_shortcodes( $text );

ショートコードを含むテキストを保存している項目にも応用可

想定されるトラブル

ショートコードが実行されない

apply_shortcodes() を使っても出力がそのまま [shortcode] のように表示される。

解決方法

add_shortcode() によるショートコードの登録が正しくできているか、または shortcode_exists() で存在チェックをする。

HTML内でうまく展開されない

解決方法:

ショートコードの出力内容が HTML を含む場合、フィルタフックや出力エスケープとの兼ね合いを調整する必要があります。wp_kses_post() などが適用されていないか確認。

Q&A

do_shortcode() との違いは?

基本的な動作は同じですが、apply_shortcodes() は WordPress 5.4 以降に導入された新しい関数で、可読性と意味の明確さが向上しています。

PHPの配列の中でも使える?

はい。たとえばウィジェットの設定値など、配列内の値にショートコードを含め、それを取り出して apply_shortcodes() を適用すれば展開可能です。

Gutenbergブロックには自動でショートコード適用される?

通常の投稿本文では自動で do_shortcode() 相当の処理がされますが、独自に保存されたメタ情報などには手動で apply_shortcodes() を使う必要があります。

まとめ

  • apply_shortcodes()文字列中のショートコードを展開するための新しい関数
  • do_shortcode() と同様の働きをしつつ、命名が明確で今後の標準に
  • 任意の文字列(カスタムフィールド、オプション、ウィジェットなど)にも使える
  • add_shortcode()shortcode_exists() などと組み合わせるとさらに便利
  • トラブル回避のため、ショートコード登録状況のチェックを事前に行うと安心
よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次