PHP получает первую запись отдельно от массива, возвращаемого wpdb->получить результаты()


Извиняюсь, если название непонятно, не могу придумать, как это сформулировать.

Я получаю довольно стандартный список сообщений, подобных этому:

    $pageposts=$wpdb->get_results("
            SELECT * FROM $wpdb->posts 
            WHERE post_type='post' AND post_status='publish' 
            ORDER BY post_date DESC LIMIT 6
        ", OBJECT);
    $firstpost = array_shift($pageposts);  

Но это не то, чего я ожидаю. Вместо $firstpost, содержащего первое сообщение в массиве $pageposts (как говорят документы , оно содержит самое старое - и $pageposts все еще содержит это сообщение (чего не должно быть в соответствии с документами), однако последнее сообщение отсутствует. Я не знаю, что за Гордон Беннет продолжает это, я также пробовал array_pop(), который должен делать противоположное array_shift(), но с аналогичными странными результатами (последний показанный пост, но $firstpost все еще содержит неправильное значение).

Хорошо, я немного поторопился, так что в заключение вот что я пытаюсь сделать: Я хочу сделать один запрос, получить результат и распечатать последнее сообщение в одной области страницы, а затем остальные сообщения в другой области. Проблема в том, что в HTML старые сообщения появляются перед одним новым сообщением, поэтому мне нужно разделить его на отдельную переменную и убедиться, что старые сообщения не показывают эту новую вместе с другими.

Имеет ли это смысл?

Любая помощь приветствуется:)

 1
Author: jammypeach, 2012-03-26

1 answers

После того, как вы установили результат в определенном порядке, вы можете достичь его просто, как показано ниже: -

$pageposts=$wpdb->get_results("
            SELECT * FROM $wpdb->posts 
            WHERE post_type='post' AND post_status='publish' 
            ORDER BY post_date DESC LIMIT 6
        ", OBJECT);

Первый раз

$i=1;
foreach($pageposts as $pageposts_first){
//here goes your first post
if($i==1) break;
}

Для остальных сообщений

$i=0;
foreach($pageposts as $pageposts_rest){
 $i++;
   if($i==1) continue;
  //here goes you rest of posts
}

Вы можете сделать то же самое, даже если вместо этого используете get_posts..

 2
Author: Rajeev Vyas, 2012-03-26 12:14:14