WordPress — Отображение подстраниц (заголовок и миниатюра) На подстраницах

#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(); ?>