• Решено bloodrail

    (@bloodrail)


    Собственно три вопроса.

    1. Как сделать breadcrump
    2. Как сделать навигацию сайта в зависимости от родительской страницы.

    например есть страница «О компании» (http://example.com/about)

    соответственно скрипт на отображение меню дочерних страниц будет такой

    <?php if (is_page(‘about’)) {?>
    <?php wp_list_pages(‘child_of=6’); ?>
    <?php } else {?>
    ну а тут все остальное
    <?php } ?>

    Итак отображается дочерняя навигация страницы «О компании».
    Но если перейти по ссылкам например http://example.com/about/employment
    то тогда меню отображаться не будет, а будет соответственно else. Собственно вопрос как его отобразить на всех страницах родительской категории. Да есть вариант вручную прописывать, но это не вариант.

    3 И третий вопрос по классу current_page_item
    WP делает данный класс, но только если страница about, а если about/employment то он присваивает только текущий странице, а не родительской. Как заставить что бы он присваивал current родительской и текущей странице ?

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Для начала неплохо было бы ознакомится с правилами форума (пункт №2).
    Далее есть поиск, например так: меню сайта.
    1. Навскидку (без использования плагинов): от Dimox’а или от Kama.
    2. Используйте wp_page_menu, либо как я предложил здесь (регулируйте глубину параметром $depth='1').
    3. Изучите внимательно wp_list_pages (с переводом).

    Спасибо за ответы, приношу извинения за нарушения правил.
    Собственно по второму пункту надумал вот такую конструкцию:

    <?php
    	$parent = $post->post_parent;
    	if ($parent == 0)
    		{
    			$postid = get_the_ID();
    			wp_list_pages('child_of='.$postid.'');
    		}
    	else
    		{
    			wp_list_pages('child_of='.$parent.'');
    		}
    ?>

    и как ни странно все работает.
    Вопрос по хлебным крошкам открыт, и по currrent классу тоже.
    Заранее благодарю за ответы.

    и как ни странно все работает

    здесь нет ничего странного — функция wp_list_pages по умолчанию вызывается с параметром ‘depth=0’, т.е. включает в список все уровни вложенных страниц в древовидном виде.
    Насчёт currrent класса (он, кстати, не current, а current_page_item) всё предельно чётко и ясно написано в 5-м пункте перевода описания wp_list_pages.
    По хлебным крошкам тоже вроде всё просто и понятно — вставляете любой понравившийся вариант в function.php и в нужном месте шаблона вызываете функцию.

    Вы великолепны!
    Благодарю вас, все получилось с помощью current_page_ancestor
    Огромное вам спасибо.
    Что касается

    <?php
    	$parent = $post->post_parent;
    	if ($parent == 0)
    		{
    			$postid = get_the_ID();
    			wp_list_pages('child_of='.$postid.'');
    		}
    	else
    		{
    			wp_list_pages('child_of='.$parent.'');
    		}
    ?>

    Можно использовать данный код ? или wp не рекомендует ?

    Не проблема — это штатная функция WP.
    Только вы должны ясно понимать, что хотите получить.
    Например, есть следующая структура сайта:

    Главная
    — Страница №1
    — Страница №1.1
    — Страница №1.2
    — Страница №1.2.1
    — Страница №1.2.2
    — Страница №1.3
    — Страница №2
    — Страница №2.1
    — Страница №2.2
    — Страница №3

    Если находитесь на «Страница №1.2», то (как я понял) должно выводится:

    — Страница №1.2
    — Страница №1.2.1
    — Страница №1.2.2

    Для этого достаточно использовать:

    <ul>
    <li><?php echo get_the_title($post); ?></li>
    <?php wp_list_pages('title_li=&child_of='.$post->ID); ?>
    </ul>

    Ок, спасибо большое. Топик можно закрывать.

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Тема «Меню wordpress» закрыта для новых ответов.