概要
has_post_format
関数は、指定した投稿に特定の投稿フォーマットが設定されているかどうかを調べるために使用されます。この関数は、カスタム投稿形式をサポートしているテーマやプラグインの開発において非常に役立ちます。また、特定の形式に基づいて異なるテンプレートを表示する際にもよく使われます。以下は、この関数がよく使われる機能の例です。
- 投稿形式に応じた異なるレイアウトを提供する
- 特定の投稿形式でコンテンツをフィルタリングする
- 投稿内容に関連するメタ情報を表示する
- カスタムスタイルやスクリプトの読み込み条件を判断する
- 投稿形式に基づいたウィジェットの表示を制御する
- 投稿一覧での形式ごとの仕分け表示を行う
- 特定の投稿形式に対して異なるサイドバーを表示する
- コンテンツのカスタムメタを管理する
構文
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
アクションで使用されることが多いです。