イントロ

ポストフォーマットは、テーマ機能で、バージョン3.1と共に導入されました。ポストフォーマットは、テーマがポストの表示をカスタマイズするために使用できるメタ情報の一部です。ポストフォーマット機能は、この機能をサポートするすべてのテーマで利用可能なフォーマットの標準化されたリストを提供します。テーマは、リスト内のすべてのフォーマットをサポートする必要はありません。新しいフォーマットは、テーマやプラグインによって導入することはできません。このリストの標準化により、多くのテーマ間の互換性が提供され、外部ブログツールが一貫した方法でこの機能にアクセスできるようになります。

要するに、ポストフォーマットをサポートするテーマを使用すると、ブロガーはラジオボタンリストからポストフォーマットを選択することで、各ポストの見た目を変更できます。

アサイドを例にすると、過去にはアサイドというカテゴリが作成され、そのカテゴリにポストが割り当てられ、post_class()in_category(‘asides’)のスタイリングルールに基づいて異なる表示がされました。ポストフォーマットでは、新しいアプローチにより、テーマがポストフォーマットをサポートすることが可能になり(例:add_theme_support(‘post-formats’, array(‘aside’)))、ポストを保存する際にパブリッシュメタボックスでポストフォーマットを選択できるようになります。get_post_format($post-
>ID)
の関数呼び出しを使用してフォーマットを判定し、post_class()は「format-asides」クラスを作成し、純粋なCSSスタイリングを行います。

サポートされているフォーマット

以下のポストフォーマットは、テーマがそれらのサポートを有効にしている場合にユーザーが選択できるものです。

実際のポストコンテンツの入力は変更されませんが、テーマはこのユーザーの選択を使用して、選択されたフォーマットに基づいてポストを異なる方法で表示できます。たとえば、テーマは「ステータス」ポストのタイトルの表示を省略することができます。表示方法は完全にテーマに依存しますが、以下は一般的なガイドラインです。

  • aside: 通常、タイトルなしでスタイリングされます。Facebookのノート更新に似ています。
  • gallery: 画像のギャラリー。ポストにはギャラリーショートコードが含まれ、画像の添付ファイルがあります。
  • link: 別のサイトへのリンク。テーマは、ポストコンテンツ内の最初の<a href="">タグをそのポストの外部リンクとして使用することを望むかもしれません。別のアプローチとして、ポストがURLのみで構成されている場合、それがURLとなり、タイトル(post_title)がそのアンカーに付随する名前となります。
  • image: 単一の画像。ポスト内の最初の<img>タグは画像と見なされる可能性があります。あるいは、ポストがURLのみで構成されている場合、それが画像URLとなり、ポストのタイトル(post_title)が画像のタイトル属性となります。
  • quote: 引用。おそらく引用内容を保持するブロック引用を含むでしょう。あるいは、引用が単に内容であり、出典/著者がタイトルである場合もあります。
  • status: Twitterのステータス更新に似た短いステータス更新。
  • video: 単一のビデオまたはビデオプレイリスト。ポストコンテンツ内の最初の<video>タグまたはオブジェクト/埋め込みはビデオと見なされる可能性があります。あるいは、ポストがURLのみで構成されている場合、それがビデオURLとなります。ビデオサポートがブログで有効になっている場合(プラグインを介してなど)、ポストにビデオを添付することもできます。
  • audio: オーディオファイルまたはプレイリスト。ポッドキャスティングに使用される可能性があります。
  • chat: チャットのトランスクリプト、次のように:
  1. John: foo
  2. Mary: bar
  3. John: foo 2

注意: ポストを書くまたは編集する際、標準はポストフォーマットが指定されていないことを示すために使用されます。また、無効なフォーマットが指定された場合、標準(フォーマットなし)が使用されます。

関数リファレンス

主な関数: set_post_format(), get_post_format(), has_post_format().

その他の関数: get_post_format_link(), get_post_format_string().

テーマサポートの追加

テーマは、functions.phpファイル内でadd_theme_support()を使用して、WordPressにどのポストフォーマットをサポートするかを配列として渡す必要があります。

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

initフックが呼び出される前にこれを呼び出す必要があることに注意してください!使用するのに良いフックはafter_setup_themeフックです。

ポストタイプサポートの追加

ポストタイプは、functions.phpファイル内でadd_post_type_support()を使用して、WordPressにどのポストフォーマットをサポートするかを伝える必要があります:

  1. // add post-formats to post\_type 'page'
  2. add_post_type_support( 'page', 'post-formats' );

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

  1. // register custom post type 'my_custom_post_type'
  2. add_action( 'init', 'create_my_post_type' );
  3. function create_my_post_type() {
  4. register_post_type( 'my_custom_post_type',
  5. array(
  6. 'labels' => array( 'name' => __( 'Products' ) ),
  7. 'public' => true
  8. )
  9. );
  10. }
  11. //add post-formats to post_type 'my_custom_post_type'
  12. add_post_type_support( 'my_custom_post_type', 'post-formats' );

または、register_post_type()関数内でpost-formatsを追加し、supportsパラメータ配列に追加します。次の例は上記のものと同等です。

  1. // register custom post type 'my_custom_post_type' with 'supports' parameter
  2. add_action( 'init', 'create_my_post_type' );
  3. function create_my_post_type() {
  4. register_post_type( 'my_custom_post_type',
  5. array(
  6. 'labels' => array( 'name' => __( 'Products' ) ),
  7. 'public' => true,
  8. 'supports' => array('title', 'editor', 'post-formats')
  9. )
  10. );
  11. }

フォーマットの使用

テーマ内で、get_post_format()を使用してポストのフォーマットを確認し、それに応じて表示を変更します。デフォルトフォーマットのポストはFALSEの値を返すことに注意してください。また、has_post_format() 条件タグを使用することもできます:

  1. if ( has_post_format( 'video' )) {
  2. echo 'this is the video format';
  3. }

フォーマットを使用する別の方法は、スタイリングルールを通じてです。テーマは、ポストを囲むラッパーコード内でpost_class()関数を使用して動的スタイリングクラスを追加する必要があります。ポストフォーマットは、この方法で追加のクラスを引き起こし、「format-foo」という名前を使用します。

たとえば、ステータスフォーマットポストからポストタイトルを隠すには、テーマのスタイルシートに次のように記述できます:

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

推奨スタイリング

フォーマットを好きなようにスタイリングおよびデザインすることができますが、各フォーマットは現代の使用に基づいて特定の「スタイル」に適しています。各フォーマットの意図された使用を念頭に置くことは重要であり、これにより読者によって視覚的に特定のタイプのものとして簡単に認識されるようになります。

たとえば、アサイド、リンク、ステータスフォーマットは通常、タイトルや著者情報なしで表示されます。シンプルで短く、マイナーです。アサイドはおそらく1、2段落を含むことができ、リンクはおそらくURLへのリンクを含む1文だけになるでしょう。リンクとアサイドの両方は、単一のポストページへのリンク(the_permalink()を使用)を持つ可能性があり、コメントを許可しますが、ステータスフォーマットにはそのようなリンクがない可能性が高いです。

一方、画像ポストは通常、キャプション/テキストの有無にかかわらず単一の画像を含むだけです。オーディオ/ビデオポストも同様ですが、オーディオ/ビデオが追加されます。これらの3つのいずれかは、プラグインまたは標準の埋め込みを使用してコンテンツを表示することができます。タイトルや著作権は表示されない場合もあります。なぜなら、コンテンツが自己説明的である可能性があるからです。

引用フォーマットは、特に追加情報なしで人からのシンプルな引用を投稿するのに適しています。引用をポストコンテンツに単独で入れ、引用された人の名前をポストのタイトルに入れると、the_content()を単独で表示し、ブロック引用形式に再スタイリングし、the_title()を使用して引用された人の名前をバイラインとして表示することができます。

特にチャットは、多くの場合、等幅フォントの表示に傾くでしょう。.format-chatにスタイリングを施すことで、灰色の背景のdiv内で等幅フォントを使用してポストの内容を表示することができ、視覚的にチャットセッションとして区別できます。

子テーマにおけるフォーマット

子テーマは、親テーマによって定義されたポストフォーマットを継承します。子テーマでポストフォーマットのためにadd_theme_support()を呼び出す場合、親テーマの優先度よりも遅い優先度で行う必要があり、既存のリストを上書きします。

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

remove_theme_support(‘post-formats’)を呼び出すと、すべてが完全に削除されます。

後方互換性

プラグインやテーマが以前のバージョンのWordPressと互換性がある必要がある場合、post-format-$formatという名前の用語をpost_formatタクソノミーに追加する必要があります。たとえば、

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

post_formatタクソノミーをregister_taxonomy()で登録する必要もあります。

ソースファイル

外部リソース

変更履歴