まず第一に、これは主にループ™に関する質問です。添付ファイルにも問題がありますが、役に立つと思われるスニペットがあちこちにあるので、それはどういうわけか二次的なものです。
わかりましたので、これは私がフロントページでやりたいことです:
- カスタム投稿タイプ「ポートフォリオ」から 7 件の投稿を取得する
- 最初のものでのみ、特定の添付ファイルを取得します(ファイル名、メディアマネージャーでの順序など、可能な方法で...最善の、よりクリーンな方法は何でも)
- 他の 6 つについては、the_post_thumbnail() などを取得するだけです。
今、私はこれを持っています:
<?php
$args = array (
'post_type' => 'portfolio',
'order' => 'DESC',
'posts_per_page' => 7
);
$query = new WP_Query( $args );
$first_post = true; /* we will take the latest work first */
?>
<?php if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<?php
if ($first_post):
$first_post = false;
?>
<div> /* This is the div for the first item */
<?php /* let's take the first attachment */
$args = array(
'post_type' => 'attachment',
'numberposts' => 1,
'order' => 'DESC'
);
$attachments = get_posts( $args );
if ( $attachments ) :
foreach ( $attachments as $attachment ) :
echo wp_get_attachment_image( $attachment->ID, 'full' );
endforeach;
endif;
?>
</div>
<?php else: ?>
/* Do something with the other 6 posts and their post_thumbnail */
<?php endif ?>
<?php endwhile; ?>
そして今、質問のために:
何よりもまず、添付ファイルを回復しようとするときに「numberposts」をすべて (-1) に設定すると、すべての「ポートフォリオ」投稿からすべての添付ファイルを取得します。現在の投稿 (the_post()) だけを操作するべきではありませんか? ここでループの概念がよくわかりません。これが主な質問です。
そのコードは、その投稿のメディア マネージャーの最初の場所に配置されていても、最初の添付ファイルを取得しません。
二次ループまたはネストされたループを使用する必要がありますか? 私はコーデックスや他のチュートリアルを読んで再読しましたが、それでも頭を包むことはできません.
どうもありがとう!