サポート » 使い方全般 » get_postsのパラメータ範囲指定

  • 解決済 tagosaku

    (@tagosaku)


    以前こちらのフォーラムで、全記事中で使われている画像から任意の数をランダムに選んで、その画像が使われている記事への画像付きリンクを生成する関数が紹介されていました。
    以下がそのソースコードです。

    function my_random_images_for_sidebar($count=1, $size='thumbnail'){
     $args= array(
     'showposts'=> $count,
     'post_type'=> 'attachment',
     'post_mime_type'=> 'image',
     'orderby'=> 'rand',
     );
    
     $images= get_posts($args);
    
     $html= '<div class="randam-attachment" style="%4$s">
    <a href="%1$s" rel="post" title="%2$s">%3$s</a><br />
    </div>';
     /* 2枚ずつ並べる */
     $columns= 2;
     $inline_style= 'width:'.round( (96 - $columns * 2) / $columns ) .'%;display:inline-block;margin:0 '.$columns .'%;';
    
     foreach($images as $key=>$image){
     printf( $html,
     get_permalink($images[$key]->post_parent),
     esc_attr( get_the_title($images[$key]->post_parent) ),
     wp_get_attachment_image($image->ID,$size ,true, array( 'style'=>'max-width:100%;height:auto;' ) ),
     $inline_style
    );
     }
    }

    現在こちらを流用して、サイドバーなどに画像付きリンクを並べているのですが、ひとつ問題があります。

    こちらのコード、記事に関連付けられていない画像(例えばファビコンやブログの背景画像)まで拾ってしまいます。

    post_parentが0以外の画像を抽出できればよいのですが、get_postsのパラメータにて、そういった指定は可能でしょうか?

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    WordPress 3.6からは、post_parent__not_in という指定で、「親のIDが○○でない」という指定ができるようになっています。
    ただし、このパラメーターは配列で指定する必要があるので、

    'post_parent__not_in' => array( 0 ),

    という指定になるはずです。

    それと、post_parent が 0でないというのは、post_parent で指定された記事の編集画面からアップロードされた、またはアイキャッチ画像としてアップロードされたものとなるため、必ずしも「記事中に使われている」と同じではないという点は留意しておく必要があります。
    (厳密に「記事中で使われている」という情報はWordPressは持っていません。)

    トピック投稿者 tagosaku

    (@tagosaku)

    jim912さん
    ありがとうございます!ひとまずそれで十分です。ファビコンやら背景やらサイドバーに表示している画像が抽出されるのは格好悪いですからね。

    3.6からですか。このタイミングでこの機能がリリースされたとは、私はとても運が良いようですね。

    非常に助かりました。本当にありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「get_postsのパラメータ範囲指定」には新たに返信することはできません。