• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

投稿フォーマット

提供: WordPress Codex 日本語版
Post Formatsから転送)
移動先: 案内検索

はじめに

投稿フォーマットバージョン 3.1 から導入されたテーマ機能で、テーマが投稿表示をカスタマイズする際に使えるメタ情報を指します。投稿フォーマット機能は、対応しているすべてのテーマで使える標準となるフォーマットをいくつか定義しています。テーマですべてのフォーマットに対応する必要はありません。また、テーマやプラグインで新規フォーマットを追加することはできません。フォーマットを標準化することにより、数多くのテーマ間での互換性を確立し、外部ブログツールが一貫性を持ってこの機能にアクセスできるようになります。

投稿フォーマットに対応しているテーマを使っているユーザーはラジオボタンのリストからフォーマットを選択できます。

アサイド(Asides)という投稿フォーマットを例にとってみます。今までは、「アサイド」カテゴリーを作成しここに投稿を含めてから、post_class() または in_category('asides') というタグを使って表示スタイルを変えていました。

新しいアプローチである投稿フォーマットを使えば、テーマ内で投稿フォーマット(例: add_theme_support('post-formats', array( 'aside')))のサポートを追加し、投稿を保存する際にその形式を「公開」メタ情報ボックスから選ぶことができます。get_post_format( $post->ID ) 関数で形式を定義でき、post_class() で "format-asides" クラスを生成し、CSS のみのスタイリングができます。

対応している投稿フォーマット

対応しているテーマ内で、ユーザーは以下の投稿フォーマットを利用できます。

aside(アサイド)
通常タイトルなしで表示。Facebook の Notes のようなもの。
gallery(ギャラリー) 
画像ギャラリー。ギャラリーショートコードと添付画像を含む投稿など。
image(画像) 
単独の画像。投稿本文内の最初の <img /> タグが画像と見なされる。もし投稿本文が URL のみの場合はそれが動画 URL となり、投稿タイトル (post_title) が画像の title 属性となる。
link(リンク) 
他サイトへのリンク。投稿本文内の一つ目の <a href=””> タグがその投稿の外部リンクと見なされる。もし投稿本文が URL のみの場合はその URL が外部リンクとなり、投稿タイトル (post_title) が名前となる。
quote(引用) 
引用文。引用文と引用元のテキストエリアを設けるのが望ましい。引用文は <blockquote>$quote_wrapped_with_paragraphs<p><cite>$citation</cite></p></blockquote> として post_content に保存すること。
status(ステータス) 
通常140程度の短い近況アップデート。Twitter のツイートのようなもの。
video(動画) 
単独の動画、または動画のプレイリスト。投稿本文内の最初の <video /> タグまたは object/embed が動画と見なされる。もし投稿本文が URL のみの場合は、それが動画 URL となる。
audio(音声) 
音声ファイル、またはプレイリスト。ポッドキャストにも使える。
chat(チャット) 
チャット履歴。例えば以下のようなもの。
太郎: やあ!
花子: 元気?
一郎: おう!

注 : 投稿の作成や編集で投稿フォーマットを指定しない場合は、「標準」が使用されます。不正な投稿フォーマットが指定された場合も、"フォーマットなし" の意味で「標準」が使用されます。


関数リファレンス

メイン関数
その他の関数

テーマ対応方法

テーマをこの機能に対応させるには、functions.php 内で add_theme_support() を使う。投稿フォーマットの配列を以下のように渡し、どの投稿フォーマットに対応しているのかを WordPress へ知らせる。

add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );

注意 : この関数は init/en フックが呼び出される前に呼び出す必要があります。呼び出すとすれば after_setup_theme/en フックが適切でしょう。


投稿タイプ対応の追加

投稿タイプは、WordPress にどのポスト形式をサポートするかをファイルに伝えるために、functions.php 内で、add_post_type_support() を使う必要があります。

// 投稿タイプ「page」に投稿フォーマットを追加
add_post_type_support( 'page', 'post-formats' );

次の例ではカスタム投稿タイプ「my_custom_post_type」を登録し、投稿フォーマットを追加します。

// カスタム投稿タイプ「my_custom_post_type」を登録
add_action( 'init', 'create_my_post_type' );
function create_my_post_type() {
    register_post_type( 'my_custom_post_type',
      array(
        'labels' => array( 'name' => __( '製品' ) ),
        'public' => true
    )
  );
}

// カスタム投稿タイプ「my_custom_post_type」に投稿フォーマットを追加
add_post_type_support( 'my_custom_post_type', 'post-formats' );

あるいは関数 register_post_type() の中で 'supports' パラメータ配列に 'post-formats' を追加します。次の例は上の例と同等です。

// カスタム投稿タイプ「my_custom_post_type」を登録し、投稿フォーマットを追加
add_action( 'init', 'create_my_post_type' );
function create_my_post_type() {
    register_post_type( 'my_custom_post_type',
      array(
        'labels' => array( 'name' => __( '製品' ) ),
        'public' => true,
        'supports' => array('title', 'editor', 'post-formats')
    )
  );
} 

フォーマットの使用

テーマでは get_post_format() して投稿フォーマットを確認し、フォーマットに応じて表示を変更できます。デフォルトの投稿フォーマットは FALSE 値を返すことに注意してください。あるいは [関数リファレンス/has_post_format|has_post_format()]] 条件分岐タグ を使用してください。

if ( has_post_format( 'video' )) {
  echo '「動画」投稿フォーマットです。';
}

スタイルのルールから投稿フォーマットを使用する方法もあります。テーマは投稿を囲むラッパーのコードで post_class() 関数を使用して動的なスタイルクラスを追加できます。投稿フォーマットではこの方法を使用して「format-foo」という名前の追加のクラスを付けます。

例えば「ステータス」投稿フォーマットの投稿のタイトルを隠すには、テーマのスタイルシートに次の行を追加します。

.format-status .post-title {
display:none;
}

スタイリングについてのアドバイス

投稿フォーマットの表示をどのようにデザインするかは自由ですが、それぞれのフォーマットには一般に使われるある種の「スタイル」があります。各フォーマットの意図を理解することは、読者に対して情報の種類をビジュアルに分かりやすく伝える意味で重要です。

たとえば投稿フォーマットの「アサイド」「リンク」「ステータス」は通常、タイトルや作成者の情報なしで表示されます。これらはシンプルで、短く、小さな情報で、「アサイド」が恐らく 1つか、2つの段落であるのに対し、「リンク」は URL へのリンクを含む 1つの文です。両方とも 1つの投稿ページへのリンクを( the_permalink() を使用して)含み、コメントを許可できますが、「ステータス」にはそのようなリンクはないでしょう。

一方、「画像」投稿フォーマットの投稿は、大部分 1つの画像のみを含み、キャプションやテキストが付いたり、付かなかったりします。「音声」「動画」投稿フォーマットの場合は画像の代わりに音声や動画を含むでしょう。これら 3つの投稿フォーマットの投稿では、コンテンツの表示にプラグインか oEmbed を使用できます。タイトルや作成者名はコンテンツ本体に含まれる場合、明示的に表示されないかもしれません。

「引用」投稿フォーマットは特に、著名な人物からのシンプルな引用の投稿に適しています。投稿の本文に引用文のみを書き、タイトルに人物名を書けば、投稿のデザインとして the_content() の出力を blockquote 形式で表示し、署名の位置に the_title() で引用元の名前を表示できます。

「チャット」投稿フォーマットは多くの場合、等幅形式で表示されるでしょう。.format-chat のスタイルとして、投稿のコンテンツを等幅フォント + グレイの背景色の div 的に表示することで、チャットのセッションとしてビジュアルに表現します。


子テーマ内の投稿フォーマット

子テーマは親テーマで定義された投稿フォーマットを継承します。子テーマでの投稿フォーマット用に add_theme_support() を呼び出す場合は、親テーマでの定義の後に呼び出す必要があります。既存のリストに対して上書きします。追加ではありません。

add_action( 'after_setup_theme', 'childtheme_formats', 11 );
function childtheme_formats(){
     add_theme_support( 'post-formats', array( 'aside', 'gallery', 'link' ) );
}

remove_theme_support('post-formats') を呼び出すとすべての投稿フォーマットが削除されます。

後方互換

この機能を含めたプラグインやテーマを古いバージョンにも対応させるには、post-format-$format というキーワード項目を "post_format" に含める必要がある。例えば以下の通り。

wp_insert_term( 'post-format-aside', 'post_format' );

また、register_taxonomy() を使って post_format タクソノミーを登録すること。

ソースファイル

外部リソース

関連項目

テーマサポート: add_theme_support(), remove_theme_support(), current_theme_supports()
テーマ機能: サイドバー, ナビゲーションメニュー, 投稿フォーマット, 投稿サムネイル, カスタム背景, カスタムヘッダー, 自動フィードリンク, html5, コンテンツ幅, editor-style


投稿フォーマット: set_post_format(), get_post_format(), has_post_format(), the_post_format_audio() /en, get_the_post_format_media() /en, get_content_audio() /en, the_post_format_chat() /en, get_the_post_format_chat() /en, get_content_chat() /en, add_chat_detection_format() /en, the_post_format_gallery() /en, get_content_galleries() /en, get_post_gallery_images(), the_post_format_image() /en, get_the_post_format_image() /en, get_content_images() /en, the_post_format_quote() /en, get_the_post_format_quote() /en, get_content_quote() /en, the_post_format_url() /en, get_the_post_format_url() /en, get_content_url() /en, the_post_format_video() /en, get_content_video() /en, the_remaining_content() /en, get_the_remaining_content() /en, get_post_format_meta() /en, post_format_content_class() /en, get_post_format_content_class() /en, post_formats_compat() /en


最新英語版: WordPress Codex » Post Formats最新版との差分