投稿フォーマットの活用

WordPressバージョン3.1から導入された投稿フォーマット。
よく分からなかったのでスルーしていましたが…single.phpでちょっとした表示切替に役立つじゃん!ということで活用することにしました。

投稿画面
投稿画面内

投稿フォーマットの種類

  • aside/アサイド
  • audio/音声
  • chat/チャット
  • gallery/ギャラリー
  • image/画像
  • link/リンク
  • quote/引用
  • status/ステータス
  • video/動画

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

テーマが投稿フォーマットに対応していない場合は、function.phpに以下を記入します。

/*投稿フォーマット*/
add_theme_support( 'post-formats', array( 'aside', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video', 'audio' ) );

投稿フォーマットの各テンプレート(content-フォーマット名.php)と、標準フォーマット用のcontent.phpをテーマ内にアップロード。

さらに、投稿記事や固定ページなどのテンプレート内のthe_content()部分を、投稿フォーマットを読み込ませるタグに書き換えます。

single.phpまたはpage.phpに投稿フォーマットを読み込ませる

通常の投稿表示のタグ部分↓

<?php the_content(); ?>

上記をget_template_partで、投稿フォーマットのテンプレートパーツを読み込む タグに変更↓

<?php get_template_part( 'content', get_post_format() ); ?>

一部分のデザイン、表示切り替えにも活用できる

投稿内容を表示させる<?php the_content(); ?>はそのままに、変更させたい部分に投稿フォーマットを読み込ませて表示を切り替えることも可能です。

たとえば、ショッピングサイトならカート部分の切り替えだけに使用できます。カート内容はカスタムフィールドで制御し、商品が一つだけの場合は通常表示用「content.php」を読み込ませ、複数商品の場合は投稿フォーマットで用意した「content-フォーマット名.php」に切り替えればOK。

これ、以前はプラグインを使用していたんですが、これからは投稿フォーマットで対応ですよ!

投稿画面でフォーマットを選択して投稿すれば完了
投稿フォーマット

記事投稿一覧を見てみると、タイトル端に選択した投稿フォーマットのアイコンが表示されていました。(WordPress3.7使用時)
分かりやす~い^^

投稿一覧

現在はsingle.phpにしか適用していないものの、page.phpにも対応させると、標準でcontent.phpが表示されてしまうはず。中身をifで条件分岐するか、’content’部分を任意の名前に変更してできるか…ちょっと模索中。

投稿フォーマットのラベル(テキスト)を変更する

投稿フォーマットは、各テンプレートのデザインを自由にカスタマイズして使用できますが、既存のラベルと投稿内容が大きく違うと分かりづらいし、なんか嫌だ(笑

そんな時にはラベル(テキスト)を変更してしまいましょう!

例えば通販サイトなどを運営していると、既存のラベル内容ではほぼ使わないので、アサイド→商品複数チャット→販売終了に変更して使用することにしました。

function.phpには以下を記入(他フォーマットは使用しないので未記入)

/*投稿フォーマット*/
add_theme_support( 'post-formats', array( 'aside','chat' ) );

function rename_post_formats( $safe_text ) {
    if ( $safe_text == 'アサイド' )  return '商品複数';
    if ( $safe_text == 'チャット' )  return '販売終了';
    return $safe_text;
}
add_filter( 'esc_html', 'rename_post_formats' );

このように表示が変わりますた!

投稿フォーマット名前変更
▽こんな条件分岐で表示切替も

<?php if ( 'image' == get_post_format( $post->ID ) ) : ?>
        ギャラリーページ、ポートフォリオ用表示
<?php elseif ( 'chat' == get_post_format( $post->ID ) ) : ?>
        チャット用表示
<?php else : ?>
        そのほか
<?php endif; ?>

▽ループ内などで投稿フォーマットの条件分岐

if ( has_post_format( 'quote' )) {
  echo '引用しています';
}

投稿フォーマットは、投稿単位でコンテンツのデザインを変えることが主ですが、任意の記事にバナーや文字を表示させたり…結構いろんなことに活用できそうですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です