Получите самую последнюю публикацию с определенным настраиваемым полем - Wordpress

Я пытаюсь уменьшить количество циклов, которые у меня есть на домашней странице веб-сайта журнала.

Я хочу отображать сообщение с определенным настраиваемым полем по-другому, однако мне нужна только первая запись (самая последняя) с этим настраиваемым полем. Я могу добиться этого, создав еще один цикл, но я бы хотел, чтобы он был включен в цикл ниже.

Например, вот мой запрос, но мне нужно дополнительное условие для if (get_post_meta($post->ID, 'featured', true)):, чтобы он включал только самый последний пост, который соответствует этому условию

 $fourth_query = new WP_Query($args4); 
 while($fourth_query->have_posts()) : $fourth_query->the_post();
 if (get_post_meta($post->ID, 'featured', true)):   
     get_template_part( 'content-opinion', get_post_format() );
 else :
     get_template_part( 'content', get_post_format() );
 endif;
 endwhile;
 wp_reset_postdata();

person stemie    schedule 31.03.2014    source источник
comment
использование аргумента в мета-ключе и значении для сортировки вашего сообщения: codex.wordpress.org/Template_Tags/get_posts   -  person Ravi Patel    schedule 31.03.2014
comment
Думаю, мне просто нужно использовать другой цикл. Есть много сообщений с этим настраиваемым полем, мне нужна самая последняя, ​​и я надеялся, что смогу сделать это за один цикл.   -  person stemie    schedule 01.04.2014
comment
да, вы можете получить последнее мета-значение фильтра сообщений за один цикл.   -  person Ravi Patel    schedule 01.04.2014


Ответы (2)


Функция get_post_meta () возвращает значение, не являющееся логическим, поэтому вам нужно проверить, существует ли настраиваемое поле, поэтому попробуйте использовать функцию empty ()

$fourth_query = new WP_Query($args4); 
 while($fourth_query->have_posts()) : $fourth_query->the_post();
 if (!empty(get_post_meta($post->ID, 'featured', true))):   
     get_template_part( 'content-opinion', get_post_format() );
 else :
     get_template_part( 'content', get_post_format() );
 endif;
 endwhile;
 wp_reset_postdata();
person AndrePliz    schedule 31.03.2014
comment
Я ищу самую последнюю публикацию с определенным настраиваемым полем, есть много сообщений с этим настраиваемым полем. - person stemie; 01.04.2014
comment
Спасибо за вашу помощь, но тогда он вернет только одно сообщение, в цикле есть другие сообщения, которые не содержат настраиваемого поля, которое я хотел бы показать. Кажется, для этого мне нужно использовать две петли. - person stemie; 01.04.2014

вы можете объединить два запроса

<?php 
    $generalQuery               = new WP_Query($args); // there is your main query 
    $queryWithCustomField       = new WP_Query($args); // there is your query with custom post and posts_per_page = 1
    $queryWithCustomField->posts = $queryWithCustomField->posts + $generalQuery->posts; // merge it now

    if ( $queryWithCustomField->have_posts() ) : while ( $queryWithCustomField->have_posts() ) : $queryWithCustomField->the_post();
        echo "your first post is ";
    endwhile;
    else:
        echo "No post Found";
    endif;
 ?>
person Maxim Pokrovskii    schedule 02.04.2014