2026年10月2日

2026年10月2日

WordPressの投稿フォーマット(引用・動画など)の使い方とテーマでの表示切り替え

投稿フォーマットは、投稿に「引用」「動画」「アサイド」などの種類を付けて、テーマ側で見た目や一覧での扱いを変えるための仕組みです。使えるかどうかはテーマが対応を宣言しているかで決まり、対応していればエディターの設定欄から選ぶだけで付けられます。この記事では、対応の確認、エディターでの設定、子テーマで対応を追加する方法、フォーマットごとに表示を変えるコード、一覧での絞り込みまでを順に説明します。

投稿フォーマットでできること・できないこと

投稿フォーマットは、投稿に付けるラベルのようなものです。WordPress が用意している種類は次の 9 つと、何も指定しない「標準」です。

  • aside(アサイド):タイトルなしの短いメモ
  • gallery(ギャラリー):画像の一覧
  • link(リンク):外部ページの紹介
  • image(画像):1 枚の画像が主役
  • quote(引用):引用文が主役
  • status(ステータス):短い近況
  • video(動画)、audio(音声)
  • chat(チャット):会話の記録

大切なのは、フォーマットを選んでも本文の中身は自動では変わらないことです。「動画」を選んでも動画は埋め込まれず、動画は本文に自分で入れます。フォーマットはテーマに「この投稿は動画が主役」と伝える目印で、それを受けてデザインを変えるのはテーマ(またはあなたが書くコード)の役目です。種類を独自に増やすこともできません。独自の分類が必要なら、カスタムタクソノミーやカスタム投稿タイプを使います。

使っているテーマが対応しているか確認する

投稿の編集画面を開き、右側の設定パネル(「投稿」タブ)に「投稿フォーマット」の選択欄があれば、テーマが対応しています。項目の位置や名称はバージョンによって少しずつ変わっているため、見当たらない場合は設定パネル全体を探してください(2026年10月現在)。

欄が無い場合、テーマが add_theme_support( 'post-formats' ) を宣言していません。また、選択肢に出てくるのはテーマが宣言した種類だけです。「引用」と「動画」しか出ないなら、テーマがその 2 つだけを対応にしています。

エディターで投稿フォーマットを設定する

  1. 投稿の編集画面で、右側の設定パネルを開く
  2. 「投稿フォーマット」の選択欄から種類を選ぶ
  3. 本文には、そのフォーマットに合う内容を入れる。引用なら引用ブロック、動画なら YouTube などの埋め込みブロックや動画ブロック
  4. 保存して、プレビューで見た目を確認する

フォーマットに合わない本文(「引用」なのに引用ブロックが無いなど)でも保存はできますが、テーマが「最初の引用ブロックを大きく見せる」といったデザインをしている場合、意図した表示になりません。テーマの説明やデモで、各フォーマットにどんな本文を想定しているかを確認しておくと迷いません。

子テーマで投稿フォーマットに対応させる

テーマが対応していない場合や、使いたい種類が足りない場合は、子テーマの functions.php で対応を宣言します。親テーマを直接編集すると、テーマの更新で消えてしまいます。

<?php
// 子テーマの functions.php
add_action( 'after_setup_theme', function () {
	add_theme_support( 'post-formats', array( 'aside', 'quote', 'video', 'link' ) );
}, 11 );

優先度を 11 にしているのには理由があります。子テーマの functions.php は親テーマより先に読み込まれるため、同じ優先度 10 で書くと、あとから実行される親テーマの宣言で上書きされることがあります。親テーマより後に実行させるために、優先度を少し大きくしています。

宣言しただけでは、エディターで選べるようになるだけで見た目は変わりません。表示を変えるには、次のようにテンプレートや CSS を用意します。

フォーマットごとに表示を変える

CSS だけで変える

多くのテーマは記事の要素に post_class() を使っており、フォーマットが付いた投稿には format-quote や format-video のようなクラスが出力されます。ブラウザーの開発者ツールで記事の外側の要素を調べ、このクラスが付いていれば CSS だけで見た目を変えられます。

/* 子テーマの style.css などに追加 */
.format-quote .entry-title {
	display: none; /* 引用フォーマットではタイトルを隠す例 */
}
.format-quote blockquote {
	font-size: 1.4em;
	border-left: 4px solid currentColor;
	padding-left: 1em;
}

クラシックテーマのテンプレートで分ける

クラシックテーマでは、ループの中で get_post_format() を使い、フォーマットごとに別のテンプレートパーツを読み込む書き方が一般的です。フォーマットが無い投稿では get_post_format() が false を返すので、その場合は template-parts/content.php が使われます。

<?php
// 子テーマの index.php や archive.php のループ内
while ( have_posts() ) :
	the_post();
	// template-parts/content-quote.php などがあればそれを、無ければ template-parts/content.php を読み込む
	get_template_part( 'template-parts/content', get_post_format() );
endwhile;

個別の判定には has_post_format( 'video' ) が使えます。たとえばアイキャッチ画像の代わりに動画を目立たせたい場合、if ( has_post_format( 'video' ) ) で分岐させます。

ブロックテーマの場合

ブロックテーマでは PHP のテンプレートを使わないため、上の書き方はそのままでは使えません。フォーマットごとの見た目は、前述の format-* クラスを使った CSS で変えるのが手軽です。クエリーループブロックには、バージョンによって投稿フォーマットで絞り込む設定が用意されているので、「引用だけを並べるブロック」を作ることもできます。設定欄が無い場合は WordPress のバージョンを確認してください。ブロックテーマの多くは投稿フォーマットに対応を宣言していないため、使う場合は先にテーマの対応状況を確認します。

フォーマットで一覧を絞り込む・除外する

投稿フォーマットの実体は post_format というタクソノミーで、各フォーマットは post-format-quote のような名前のタームです。そのため、get_post_format_link( 'quote' ) で引用フォーマットだけのアーカイブページの URL を取得できます。

トップページの一覧から短いメモ(アサイド・ステータス)を外したい場合は、pre_get_posts でメインクエリーを調整します。

<?php
// 子テーマの functions.php
add_action( 'pre_get_posts', function ( $query ) {
	if ( is_admin() || ! $query->is_main_query() || ! $query->is_home() ) {
		return;
	}
	$query->set( 'tax_query', array(
		array(
			'taxonomy' => 'post_format',
			'field'    => 'slug',
			'terms'    => array( 'post-format-aside', 'post-format-status' ),
			'operator' => 'NOT IN',
		),
	) );
} );

is_admin() と is_main_query() の条件を外すと、管理画面の投稿一覧やサイドバーの新着記事まで絞り込まれてしまうので注意してください。

使うかどうかの判断

投稿フォーマットは、短い近況と長い記事を同じブログに混ぜたいときや、引用・動画の投稿をひと目で区別したいときに役立ちます。一方で、テーマを変えるとフォーマットの見た目が引き継がれないことが多く、フォーマットに頼ったデザインはテーマ変更のたびに作り直しになります。記事の分類が目的ならカテゴリーやタグで足りる場面も多いので、「見た目を変えたい」のか「分類したい」のかを先に決めておくと、使い分けで迷いません。

まとめ

  • 投稿フォーマットは投稿の種類を示す目印で、本文は自動では変わらない。種類は WordPress が決めた 9 つと標準のみ
  • 使えるかどうかはテーマの add_theme_support( 'post-formats' ) 次第。足りなければ子テーマで優先度を上げて宣言する
  • 見た目は format-* クラスの CSS、クラシックテーマなら get_post_format() と get_template_part() で切り替える
  • 実体は post_format タクソノミーなので、tax_query で一覧の絞り込みや除外ができる
  • テーマ変更で見た目が引き継がれにくいため、分類が目的ならカテゴリーやタグも検討する

お気軽にご相談ください

お見積りへ お問い合わせへ
▲