2012-06-15 6 views
0

Как получить вложения из всех подстраниц конкретного идентификатора страницы?Как получить вложения с дочерних страниц определенной страницы в WordPress?

Пример:

КОНКРЕТНЫЕ PAGE

  • ребенка (с приложениями)
  • ребенка (с приложениями)
  • ребенка (с вложениями)

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

<?php 
$args = array('post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => null); 
$attachments = get_posts($args); 
if ($attachments) { 
    foreach ($attachments as $post) { 
     setup_postdata($post); 
     the_title(); 
     the_attachment_link($post->ID, false); 
     the_excerpt(); 
    } 
} 
?> 

Почти там, используя этот код, согласно предложению Ник ниже:

<?php 

$mypages = get_pages('child_of=19'); 
foreach ($mypages as $mypage ) { 
$attachments = get_children(array('post_parent' => $mypage->ID, 'numberposts' => 1, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'rand')); 


if ($attachments) { 

    foreach ($attachments as $post) { 

     setup_postdata($post); 
     the_title(); 
     the_attachment_link($post->ID, false); 
     the_excerpt(); 
    } 
} 
} 
?> 

Однако есть два оставшихся вопроса:

  1. Ограничение количества полных фотографий тянул. Использование 'numberposts' ограничивает только количество изображений, полученных с каждого поста
  2. Рандомизация. Orderby => rand только рандомизирует изображения в каждом сообщении. Я хотел бы случайным образом перетасовать заказ за всем.
+0

На всякий случай я бы рекомендовал вам перенести этот вопрос на сайт WordPress, по адресу http://wordpress.stackexchange.com/ – leopic

ответ

1

Попробуйте использовать get_pages($args)

<?php $args = array(
'child_of' => 'SPECIFIC PAGE', 
'parent' => 'SPECIFIC PAGE', 
'post_type' => 'attachment', 
'post_status' => 'publish', 
'numberposts' => -1 
); ?> 

Использование child_of получат все дети и внуки.

parent ограничит это только детьми, у которых есть это как родитель. Нет внуков.

Подробнее см. Здесь. http://codex.wordpress.org/Function_Reference/get_pages

+0

@Joe, вы можете хранить все данные вложения в многомерном массиве и [shuffle] (http://php.net/manual/en/function.shuffle.php). Затем используйте цикл 'for' для отображения правильного количества вложений. – Nick

+0

просто любопытно, разве это не потянет лишние неиспользуемые данные (скажем, например, 1000 изображений)? Предполагаю, что для сервера много работы впустую? – Joe

+0

Вы уже вытащили данные из базы данных в вызов 'get_children()'. Теперь вам просто нужно оперировать. Вместо того, чтобы выводить его в цикле foreach, сохраните его в массиве. Затем перетасовываем массив, затем перебираем массив, чтобы выводить то, что вы хотите. Да, это немного больше работы, но я не могу придумать способ получить то, что вы хотите от вызовов 'get_children()' или 'get_pages()'. – Nick

Смежные вопросы