как показать дочерние страницы одного из родителей на всех страницах WordPress - PullRequest
0 голосов
/ 18 мая 2011

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

код в нижнем колонтитуле, который я использую, -

            <?php
        global $wp_query;
        $post = $wp_query->post;
        $ancestors = get_post_ancestors($post);
        if( empty($post->post_parent) ) {
            $parent = $post->ID;
        } else {
            $parent = end($ancestors);
        }
        if(wp_list_pages("title_li=&child_of=$parent&echo=0" )) { ?>

        <ul class="footerNav clearfix">
            <?php wp_list_pages("title_li=&child_of=$parent&depth=1" ); ?>
        </ul><!-- #secondary-nav -->

        <?php } ?>

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

Спасибо,

Сб

здесьссылка на страницу с нижним колонтитулом, как я хотел бы на всех страницах

http://satbulsara.com/luke-irwin/rugs/new-in/fishy/

1 Ответ

1 голос
/ 19 мая 2011

Используя

$post = $wp_query->post;
$ancestors = get_post_ancestors($post);

переменной $ post присваивается сообщение, которое в данный момент просматривает посетитель.

Если вы хотите, чтобы на всех страницах содержалось меню rugs для всех детей, вам нужна только нижняя часть кода. Кроме того, параметр child_of не требуется назначать через переменную, вы можете ввести статический идентификатор страницы rugs , т.е. 173 :

<ul class="footerNav clearfix">
    <?php wp_list_pages("title_li=&child_of=173&depth=1&sort_column=post_name" ); ?>
</ul><!-- #secondary-nav -->

Этих трех строк будет достаточно для создания меню для вас. Оператор if , который у вас есть, проверяет, есть ли у конкретной родительской страницы дочерние элементы, и генерирует неупорядоченный список, только если это так. Поскольку в этом случае вы знаете, что он существует, я бы оставил его и сохранил эти две строки. Для полноты картины я включил параметр sort_column - это даст вам отсортированное по алфавиту меню всех ковриков.

Код над оператором if необходим только для динамических меню, которые меняются в зависимости от страницы, на которой сейчас находится посетитель. Если вы когда-нибудь захотите реализовать такое меню, я все равно пойду по-другому и подумаю, что вышеупомянутое раздуто. Просто вставив

<?php $ancestors = get_post_ancestors($post); ?>

в ваш файл header.php позволит вам создавать динамические меню в других местах с

<?php if (is_page(173) || in_array(173,$ancestors)) { ?>
    <ul class="subnav">
        <?php wp_list_pages('title_li=&child_of=173&depth=1'); ?>
    </ul>
<?php } ?>

Как уже говорилось выше, для вашего конкретного случая достаточно трехстрочного блока кода кулака.

Дополнительная ссылка: WP Codex: wp_list_pages

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...