WordPress - Отображение подстраниц (заголовок и эскиз) на подстраницах - PullRequest
0 голосов
/ 20 апреля 2011

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

<?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 ",", которая отображала некоторые из подстраниц, но не все, так что я явно что-то напутал.

Может ли кто-нибудь помочь мне с изменением кода для работы на подстраницах родителя, а также над родителем?

Спасибо Zach

1 Ответ

1 голос
/ 20 апреля 2011

Используйте эту функцию для генерации идентификатора для вашего меню. Он определит, есть ли у страницы родительский элемент, и использует этот идентификатор, в противном случае он возвращает идентификатор текущей страницы.

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(); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...