web-dev-qa-db-ja.com

WP_Queryで注目の画像を確認する

WP_Queryオブジェクトを初期化するときにおすすめの画像で投稿をフィルタリングする方法はありますか?

$my_query = WP_Query(array("has_thumbnail"=>true));

もっと理想的には

$my_query = WP_Query(array("has_thumbnail_size"=>"custom_size"));
3
Mild Fuzz

技術的に特徴的な画像は、添付ファイルIDを保持する_thumbnail_idという名前のカスタムフィールドです。ですから、次のようにして簡単に問い合わせることができます。

$args = array(
    'meta_query' => array(
        array(
            'key' => '_thumbnail_id',
        )
    )
 );
$query = new WP_Query( $args );

一方、サイズはその添付ファイルの属性であり、投稿されたものではありません。添付ファイルをループ処理して、サイズを取得する必要があります(私が正しいことを覚えていれば、 wp_get_attachment_metadata() によって返されるデータにあるはずです)。

7
Rarst

これは、投稿をフィルタリングする別の方法です after 投稿にサムネイル(注目の画像)があるかどうかを判断するためにwp_get_attachment_thumb_url()が空の文字列を返すかどうかを使用するクエリです。

//get all the posts however your query does it. simple example when there aren't a lot: 
$args = array("nopaging" => true);
$posts = (new WP_Query($args))->posts;

//filter the posts array by looking up the thumb_url and seeing if it's empty
$posts_without_thumbnails = array_filter($posts,  function($post){
  $post_thumbnail_id = get_post_thumbnail_id( $post->ID );
  return ( wp_get_attachment_thumb_url( $post_thumbnail_id ) == "");
} );

あなたがこれを問い合わせの間に起こさせる必要があるなら、あなたはたぶんそれからワードプレスフィルタか行動を作るか、または query_posts を傍受することができます。

0
yuvilio