#wordpress
#wordpress
Вопрос:
Я использую следующий код для отображения списка подстраниц и изображения публикации с этих подстраниц на боковой панели, когда они находятся на родительской странице.
<?php $args = array(
'orderby' => 'menu_order',
'order' => 'ASC',
'post_parent' => $post->ID,
'post_type' => 'page',
'post_status' => 'publish'
);
$postslist = get_posts($args);
foreach ($postslist as $post) : setup_postdata($post);
?>
<div class="top10">
<a href="<?php the_permalink();?>">
<?php the_post_thumbnail('large'); ?>
</a>
</div>
<?php endforeach; ?>
<?php wp_reset_query(); ?>
Тем не менее, мне также нужно отобразить тот же список на боковой панели, когда на одной из подстраниц. В настоящее время использование того же кода без корректировки ничего не отображает на подстранице.
Я попытался изменить строку «‘post_parent’ => $ post-> ID» на «‘post_parent’ => $ post-> ID.»echo=0″,» которая отображала некоторые подстраницы, но не все из них, так что я, очевидно, что-то перепутал.
Может кто-нибудь помочь мне с изменением кода для работы на подстраницах родительской страницы, а также на родительском сервере?
Спасибо, Зак
Комментарии:
1. не могли бы вы использовать меню WordPress?
2. Меню WordPress обычно отображает только заголовки страниц, тогда как продемонстрированный метод позволяет мне извлекать миниатюры, заголовок, даже отрывок, если я захочу!
3. Итак, проблема, с которой вы столкнулись, заключается в автоматизации получения идентификатора родительской страницы? Я прав?
4. Я полагаю, что да. Взгляните на 74.54.17.66 / ~ roiminis / top-10 — это родительская страница, и вы можете увидеть, что на ней перечислены все подстраницы с левой стороны, согласно приведенному выше коду. Теперь нажмите на одну из этих подстраниц, и вы увидите, что с левой стороны ничего не отображается с тем же кодом. Мне нужно изменить код для отображения элементов с левой стороны на подстраницах, а также родительской
5. Я думаю, что понимаю вашу проблему…
Ответ №1:
Используйте эту функцию, чтобы сгенерировать идентификатор для вашего меню. Он определит, есть ли у страницы родительский элемент, и использует этот идентификатор, в противном случае он возвращает текущий идентификатор страницы.
function get_menu_id(){
if ($post->post_parent) {
$parent = get_post_ancestors($post->ID);
return $parent[0];
} else {
return $post->ID;
}
}
Полный код
<?php
function get_menu_id(){ //this function would be better off in your functions.php file
if ($post->post_parent) {
$parent = get_post_ancestors($post->ID);
return $parent[0];
} else {
return $post->ID;
}
}
$args = array(
'orderby' => 'menu_order',
'order' => 'ASC',
'post_parent' => get_menu_id(),
'post_type' => 'page',
'post_status' => 'publish'
);
$postslist = get_posts($args);
foreach ($postslist as $post) : setup_postdata($post);
?>
<div class="top10">
<a href="<?php the_permalink();?>">
<?php the_post_thumbnail('large'); ?>
</a>
</div>
<?php endforeach; ?>
<?php wp_reset_query(); ?>