has_shortcode()


WordPress関数has_shortcode()は、特定のショートコードが投稿またはページのコンテンツに含まれているかを確認するために使用されます。

構文

has_shortcode( string $content, string $shortcode );

引数の説明:

  • $content (string) — チェックするコンテンツ(投稿またはページの内容)
  • $shortcode (string) — 確認したいショートコードの名前

例1: 特定のショートコードの存在を確認する

投稿コンテンツにショートコードが含まれているかを確認します。

<?php
if ( has_shortcode( get_the_content(), 'gallery' ) ) {
    echo 'ギャラリーショートコードが見つかりました。';
}
?>

例2: 条件付きでカスタムメッセージを表示する

[contact-form]ショートコードが含まれている場合に特定のメッセージを表示します。

<?php
if ( has_shortcode( get_the_content(), 'contact-form' ) ) {
    echo 'お問い合わせフォームが含まれています。';
} else {
    echo 'お問い合わせフォームがありません。';
}
?>

例3: カスタム投稿タイプでショートコードを使用する

特定のカスタム投稿タイプ内で[my-shortcode]ショートコードの存在を確認します。

<?php
if ( is_singular( 'custom_post_type' ) && has_shortcode( get_the_content(), 'my-shortcode' ) ) {
    echo 'カスタムショートコードが使用されています。';
}
?>

例4: 複数のショートコードをチェックする

複数のショートコードのいずれかがコンテンツに含まれているかを確認します。

<?php
$content = get_the_content();
if ( has_shortcode( $content, 'gallery' ) || has_shortcode( $content, 'video' ) ) {
    echo 'ギャラリーまたはビデオショートコードが含まれています。';
}
?>

例5: ショートコードの使用を制限する

特定のショートコードが含まれている場合、投稿の編集を制限します。

<?php
if ( has_shortcode( get_the_content(), 'restricted-shortcode' ) ) {
    wp_die( 'この投稿には制限されたショートコードが含まれているため、編集できません。' );
}
?>

注意事項

  • コンテンツが空の場合、has_shortcode()は常にfalseを返します。
  • ショートコード名には、使用する際に中括弧[]を含めないでください。
  • 動作を正確に確認するには、get_the_content()apply_filters('the_content', $content)を使用してコンテンツを取得してください。

関連機能: