Wordpress - Post_In - Возможность использовать самое последнее в качестве ссылки

Я хочу загрузить свой последний пост, мой 3-й самый последний пост и мой 7-й самый последний пост на моей главной странице во время цикла выборки постов:

<?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>

post_in частично доставит вас туда, но идентификатор сообщения не связан с тем, насколько последним было ваше сообщение, поэтому я сомневаюсь, что он поможет лучшему пониманию.

$query = new WP_Query( array('post__in' => array( 2, 5, 12, 14, 20 ) ) );

Есть ли способ загрузить самый последний пост, 3-й самый последний и 7-й самый последний?

Заранее большое спасибо!


person user2676260    schedule 13.08.2013    source источник


Ответы (2)


Вот базовая модель. Увеличивайте переменную в каждом цикле ($i), затем выполняйте код с оператором if только тогда, когда эта переменная является первым, четвертым или седьмым циклом.

$i = 0;
$query = new WP_Query($args);
foreach ($query as $loop) {
    $i++;
    if ($i == 1 || $i == 4 || $i == 7) {
        # code...
    }
}

Вы могли бы сделать это с помощью встроенной функции «in_array», если бы пользователь действительно установил их. Может в мета бокс, опции темы или что-то шназное.

$array = array($featured_post, $worst_post, $amazing_post)

$i = 0;
$query = new WP_Query($args);
foreach ($query as $loop) {
    $i++;
    if ( in_array($i, $array) ) {echo 'counts equals your numbers';}
}

Также обратите внимание, что WP предоставляет вам множество аргументов массива для запроса.

'offset' => 5 //begins your new loop at the 5th post in this case. 
'orderby' => 'post_date' // default (I believe)
'order' => 'DESC' // default (I believe)
person Ben Racicot    schedule 16.09.2013

Я правильно понимаю, что вы хотите иметь два цикла: один, в котором вы получаете 3 самых последних сообщения, и один, в котором вы получаете 7 самых последних сообщений? Если это так, вы можете выполнить WP_Query и передать аргументы о том, как упорядочить запрос с помощью «order» и «orderby».

$args = array(
    'posts_per_page' => 3, // get three posts
    'order' => 'DESC', // Order ascending or decending, use desc for latest.
    'orderby' => 'date' // Tell our query to sort by date.
);

$query = new WP_Query($args);

if($query->have_posts()) : while($query->have_posts()) : $query->the_post();
    // Do what you want with your 3 latest posts.
endwhile; endif;

См. документацию по WP_Query для справки. http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

Если я неправильно понял ваш вопрос, дайте мне знать!

person ninja    schedule 13.08.2013
comment
спасибо за ответ ниндзя! я, возможно, не объяснил себя достаточно ясно, хотя я думаю, что мы действительно неправильно поняли друг друга. Если мои 10 последних сообщений были пронумерованы 1, 2, 3 ... 9, 10. Я хочу получить (например) сообщение 1, сообщение 4 и сообщение 7, не показывая сообщения 2, 3, 5, 6, 8, 9 и 10. - person user2676260; 13.08.2013
comment
А, хорошо, теперь я тебя понимаю. Не лучше ли прикреплять сообщения, которые вы хотите отобразить, а затем просто получать прикрепленные сообщения в запросе? С аргументами: 'posts_per_page' => -1 и 'post__in' => get_option('sticky_posts') ? - person ninja; 13.08.2013
comment
Хороший вопрос, я думаю, это сработает. Причина, по которой я хотел обратиться к сообщению 1, сообщению 4 и сообщению 7, заключается в том, что я полагал, что это даст мне возможность также стилизовать отдельные сообщения (разные, разбросанные по странице (например, 1, 5 и 9). Но я думаю, я смогу решить стиль по-другому. - person user2676260; 13.08.2013
comment
Вы наградите меня ответом, если я напишу код для захвата 1, 4 и 7? - person Ben Racicot; 16.08.2013
comment
@BenRacicot, извините за поздний ответ, я работал над своей проблемой, но так и не нашел ответа на этот вопрос (ответ, который я все равно хотел бы узнать). Я хотел бы понять, почему и как возможен захват 1, 4 и 7. Поэтому, если вы можете объяснить это мне или указать мне правильное направление, я все равно хотел бы наградить вас ответом. - person user2676260; 16.09.2013