WP 3.1では、多少混乱していたとしても、投稿フォーマットについて皆が興奮しています。
投稿フォーマットを有効にすることの問題は詳細に説明されています。この行をfunctions.phpに追加するのと同じくらい簡単です:add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );
しかし、 表示 /これらの投稿の問題はほとんどカバーされていません。例を使用して、特定のフォーマットの投稿を表示/照会するプロセスを文書化しましょう。
サイドバーにTwitterのようなステータスの更新を入れたいとしましょう。 status
投稿フォーマットを有効にするのは簡単ですが、どうやってそれらの投稿を実際にサイドバーに表示させるために問い合わせるのですか?
私はかなりの調査をしましたが、この問題に対する答えを見つけていません、貢献することはすべて歓迎です。良い答えが出てきたら、この問題を最初に文書化することになると思います。
ありがとうございます。
"Post Formats"機能を使って表示するためのたくさんのオプションがあります。
たとえばindex.phpループでは、 has_post_format() functionを使用して投稿形式に基づいて何を表示するかを決定できます。
if ( has_post_format( 'aside' )) {
echo the_content();
}
elseif ( has_post_format( 'chat' )) {
echo '<h3>';
echo the_title();
echo '</h3>';
echo the_content();
}
elseif ( has_post_format( 'gallery' )) {
echo '<h3>';
echo the_title();
echo '</h3>';
echo the_content();
}
elseif ( has_post_format( 'image' )) {
echo '<h3>';
echo the_title();
echo '</h3>';
echo the_post_thumbnail('medium');
echo the_content();
}
elseif ( has_post_format( 'link' )) {
echo '<h3>';
echo the_title();
echo '</h3>';
echo the_content();
}
elseif ( has_post_format( 'quote' )) {
echo the_content();
}
elseif ( has_post_format( 'status' )) {
echo the_content();
}
elseif ( has_post_format( 'video' )) {
echo '<h3>';
echo the_title();
echo '</h3>';
echo the_content();
}
elseif ( has_post_format( 'audio' )) {
echo '<h3>';
echo the_title();
echo '</h3>';
echo the_content();
}
else {
echo '<h3>';
echo the_title();
echo '</h3>';
echo the_content();
}
get_template_part() および get_post_format() を使用して、フォーマットに基づいて異なるループを取得します。これは、各フォーマットに対してフォーマットloop.php(たとえばformat-status.php)ファイルを作成したことを前提としていますあなたのテーマで使用されているので、あなたはそれをただ呼ぶだけです:
get_template_part( 'format', get_post_format() );
また、投稿の形式に基づいて投稿をクエリすることもできます。
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'post-format',
'field' => 'slug',
'terms' => array( 'post-format-quote' )
)
)
)
$query = new WP_Query( $args );
そして最後の(今のところ)あなたは "post_class();"を使うことができます。 CSSに基づいたスタイルへの機能
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
これは以下のように出力されます。
<div id="post-id" class=”post format-status”>
これが手助けになることを願っています
has_post_format を使うことも、 get_post_format を使うこともできます。 Lisa Sabin-Wilsonはそれらを使った WordPress 3.1ポストフォーマットリファレンス という良い記事を持っています。
has_post_format
の例:<?php if ( has_post_format( 'video' )) { echo 'this is the video format'; } ?>
get_post_format
の例:<?php $format = get_post_format( $post_id ); ?>
上記のすべての方法が機能しますが、それを行うためのはるかにクリーンな方法があります Dougal Campbellが示すように
while ( the_loop() ):
get_template_part( 'format', get_post_format() );
endwhile;
そのメソッドを使用すると、条件ステートメントが削除され、別の投稿形式のサポートを追加する場合に追加する必要がなくなります。テンプレートファイルを追加するだけです。
簡単な更新を追加するために、「標準」の投稿形式(デフォルト)のみを照会する場合は、他の投稿形式以外のすべての投稿を照会する必要があります。これは、WordPressが標準投稿に対して 'post-format-standard'ではなく 'false'を格納するためです。
いらいらしますが、それが私ができる唯一の方法です。
これが私が標準投稿のみを返すために使用していた 'tax_query'です:
'tax_query' => array(
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => array('post-format-aside', 'post-format-gallery', 'post-format-link', 'post-format-image', 'post-format-quote', 'post-format-status', 'post-format-audio', 'post-format-chat', 'post-format-video'),
'operator' => 'NOT IN'
)
)
また、分類名は上記のように「post-format」ではなく「post_format」です。上記の例を修正しようとしましたが、1文字の編集ができませんでした。