web-dev-qa-db-ja.com

このクエリを使用して単一のページからすべての画像を取得する

このサンプルウィジェットのコードに問題があります。 "Gallery"というページからすべての画像(マイナスの投稿のサムネイル)を取得したいのですが、何らかの理由でこれはアップロードされたすべての画像をサイト全体から取得しています。

また、このクエリから投稿のサムネイルを除外する方法について教えてください。

  query_posts('pagename=gallery');
if (have_posts()) : 
echo "<ul class='recentwidget group photowidget'>";
while (have_posts()) : the_post();
    $args = array(
    'post_type' => 'attachment',
    'numberposts' => 1,
    'post_status' => null,
    'post_parent' => $post->ID
);

$attachments = get_posts( $args );
    if ( $attachments ) {
    foreach ( $attachments as $attachment ) {
       echo '<li class="left imageshadow photolarge">';
       echo wp_get_attachment_image( $attachment->ID, 'full' );
       echo '</li>';
      }
    }
endwhile;

endif; 
wp_reset_query();
7
Dean Elliott

Get_childrenを使う

このコードを使用して、選択した順序でページギャラリーからすべての画像を抽出しました。このコードをループに含めるか、単独で使用することができます。適切なpost_parentコードを選択するだけです(以下のコード例を参照)。

この例では、ページID 1に関連付けられているすべての画像を表示しています。

        $images = get_children( array( 'post_parent' => 1, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC', 'numberposts' => 999 ) ); 
/* $images is now a object that contains all images (related to post id 1) and their information ordered like the gallery interface. */
        if ( $images ) { 

                //looping through the images
                foreach ( $images as $attachment_id => $attachment ) {
                ?>

                            <?php /* Outputs the image like this: <img src="" alt="" title="" width="" height="" /> */  ?> 
                            <?php echo wp_get_attachment_image( $attachment_id, 'full' ); ?>

                            This is the Caption:<br/>
                            <?php echo $attachment->post_excerpt; ?>

                            This is the Description:<br/>
                            <?php echo $attachment->post_content; ?>

                <?php
                }
        }

画像を抽出したい投稿IDを見つけて、この引数に挿入します。'post_parent' => 1(1をあなたのページIDに置き換えます)

あなたも使用することができます:

'post_parent' => $post->ID

ループ内でget_childrenを使用し、返された投稿IDから投稿IDを取得する場合。

あなたが注目の画像として選択された画像を除外したい場合、私はifステートメントで画像のURLが注目の画像のURLと等しいかどうかチェックします。

お役に立てれば! :)