суть в следующем – получить список страниц не как вывод данных, а как ассоциированный массив, что-бы в дальнейшем можно было им манипулировать как душе угодно. preg_replace уже не хватает. К примеру, следующими нехитрыми манипуляциями выдергиваю список постов из категории и делаю из них аккуратный массив (как следствие, вывожу на слайдере индекса):
# подключаем массивы, храняшие настройки, и прописанные в functions.php
global $portfolioImages, $previewObjectsIDs, $indexPreviewData;
# локальные переменные тоже оглашаем
static $i = 0;
$indexPreviewData = array(); # этот массив будет хранить данные для формирования превью на индексе
# получаем посты из категории портфолио
$portfolioPosts = new WP_Query('cat='.$infinePostsCats['portfolio'][categoryId].'&showposts=5&orderby=ID');
while($portfolioPosts->have_posts()) {
$portfolioPosts->the_post();
$indexPreviewData[$i] = array( # пишем и парсим необходимые данные в массив
id => $post->ID,
title => $post->post_title,
guid => $post->guid,
permalink => get_permalink(),
liClass => $previewObjectsIDs[$i],
imageId => preg_replace("/(.*)".$portfolioImages[previewRegular]."(.*)/is", '$2', $post->post_content)
);
$i++;
}
с постами понятно, но со страницами чего-то запарился. ваши мысли, коллеги?
А чем не нравится штатная функция get_posts()?
интересный вопрос 🙂 момент был в том, что тот-же seo-all-in-one опнимал луп как единственно верный, и те-же заголовки как следствие переписывал через одно место. "не айс" в общем. да и квери по моему быстрее работает.
вопрос со страницами остается
сам и отвечаю тогда:
встречный вопрос, на который ещё не ответил – получить пермалинку к посту
Сам же написал выше – get_permalink.
вуа-ля. получаем готовую функцию:
get_permalink – из головы вылетело.. )
Кстати, get_permalink() – очень подлая функция, мне показалось, что она для каждого запрошенного поста порождает два запроса к базе. Будет время – проверь.
проверил, один. конечно, уже не дело делать по два запроса (получить данный, получить пермалинк) для одного поста, будут мысли по этому поводу – давай обсудим как сделать оптимальнее
Проверял на странице или на посте?
данную функцию использую на индексе чтоб вывести список страниц. не комментируя get_permalink() получаем <!– 23 queries. 0.471 seconds. –>, комментируя <!– 18 queries. 0.498 seconds. –> (всего – 5 страниц)
Со страницами проще, им не нужно получать категории для пермалинка, а постам – нужно.
Кстати, а нафига вообще для страниц функция, если пермалинк для них всегда (ну, почти) "сайт/слаг" ?
универсальность подхода (гы)