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 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..