Запрашивать посты только с изображением в хуке pre_get_posts - PullRequest
0 голосов
/ 22 ноября 2018

Я использую хук "pre_get_posts", чтобы запрашивать только сообщения, которые имеют изображение на главной странице:

add_action( 'pre_get_posts', 'my_pre_get_posts' );
function my_pre_get_posts( $q ){ 

    if (    $q->is_home()       // only target homepage
         && $q->is_main_query() // only target the main query
         && !is_admin()         // target front end only
    ) {
        $q->set( 'meta_key', array( '_thumbnail_id' ) );
    }
}

Похоже, эта часть игнорируется.

$q->set( 'meta_key', array( '_thumbnail_id' ) );

Ваша помощь приветствуется.

1 Ответ

0 голосов
/ 01 декабря 2018

Вам необходимо проверить, существует ли meta_key '_thumbnail_id' или нет.Итак, давайте изменим ваш код следующим образом.

add_action( 'pre_get_posts', 'my_pre_get_posts' );
 function my_pre_get_posts( $q ){ 
  if (    $q->is_home()       // only target homepage
     && $q->is_main_query() // only target the main query
     && !is_admin()         // target front end only
  ) {
         $meta_query = array(
             array(
                'key'=>'_thumbnail_id',
                'compare'=>'EXISTS',
             ),
         );
         $query->set('meta_query',$meta_query);
  }
 }
...