ワードプレスのhas_post_format関数の使用方法・解説

概要

has_post_format関数は、指定した投稿に特定の投稿フォーマットが設定されているかどうかを調べるために使用されます。この関数は、カスタム投稿形式をサポートしているテーマやプラグインの開発において非常に役立ちます。また、特定の形式に基づいて異なるテンプレートを表示する際にもよく使われます。以下は、この関数がよく使われる機能の例です。

  1. 投稿形式に応じた異なるレイアウトを提供する
  2. 特定の投稿形式でコンテンツをフィルタリングする
  3. 投稿内容に関連するメタ情報を表示する
  4. カスタムスタイルやスクリプトの読み込み条件を判断する
  5. 投稿形式に基づいたウィジェットの表示を制御する
  6. 投稿一覧での形式ごとの仕分け表示を行う
  7. 特定の投稿形式に対して異なるサイドバーを表示する
  8. コンテンツのカスタムメタを管理する

構文

has_post_format( $format = '', $post = null );

パラメータ

  • $format (string) : チェックしたい投稿フォーマットのスラッグ。省略した場合は空文字列となる。
  • $post (int|WP_Post) : チェック対象の投稿のIDまたはWP_Postオブジェクト。省略した場合は現在の投稿が使用される。

戻り値

  • (bool) : 指定した投稿フォーマットが設定されている場合はtrue、そうでない場合はfalseを返す。

関連する関数

この関数を使用可能なバージョン

  • WordPress 3.1以降で使用可能

コアファイルのパス

  • wp-includes/post.php

サンプルコード

サンプル1: デフォルトの投稿形式をチェックする

このサンプルでは、現在の投稿が「標準」フォーマットであるかを確認し、メッセージを表示します。

if ( has_post_format( 'standard' ) ) {
    echo 'この投稿は標準形式です。';
}

サンプル2: 投稿フォーマットに基づくカスタムメッセージ表示

特定の投稿フォーマットに対して異なるメッセージを表示します。

if ( has_post_format( 'video' ) ) {
    echo 'この投稿はビデオ形式です。';
} elseif ( has_post_format( 'gallery' ) ) {
    echo 'この投稿はギャラリー形式です。';
}

サンプル3: 投稿フォーマットを選択する際のフィルタ

投稿フォーマットを条件にして、特定のクエリにフィルタを適用します。

add_action( 'pre_get_posts', 'custom_post_format_filter' );
function custom_post_format_filter( $query ) {
    if ( !is_admin() && $query->is_main_query() && has_post_format( 'aside' ) ) {
        // サイトのメインクエリにフィルタを追加
        $query->set( 'post_type', 'aside' );
    }
}

サンプル4: 投稿フォーマット毎にテンプレートを分ける

投稿のフォーマットに基づいて異なるテンプレートファイルを使用します。

if ( has_post_format( 'quote' ) ) {
    get_template_part( 'template-parts/content', 'quote' );
} else {
    get_template_part( 'template-parts/content', 'single' );
}

サンプル5: 投稿の一覧での条件付きスタイル

投稿のフォーマットに応じて異なるCSSクラスを追加する例です。

function add_format_class( $classes ) {
    if ( has_post_format( 'link' ) ) {
        $classes[] = 'post-link';
    }
    return $classes;
}
add_filter( 'post_class', 'add_format_class' );

この関数のアクションでの使用可能性

アクション 使用可能性
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

has_post_format関数は特にpre_get_postsアクションで使用されることが多いです。

この関数について質問する


上の計算式の答えを入力してください