Jak mogę wyświetlić menu tylko na niektórych stronach?

10

Zamiast używać widżetów paska bocznego, aby powiedzieć, na której stronie powinny być widoczne, lubię wybierać w ustawieniach menu, aby pojawiały się na określonych stronach.

Domyślny sposób Wordpress:

Jak to wygląda domyślnie

Projekty są więc stroną i zawierają niektóre podstrony. Ale co, jeśli mam jeszcze 10 takich stron i podstron w tej samej sytuacji?

Chciałbym dodać dodatkowe ustawienie (listę stron najwyższego poziomu):

Gdzie chcę ustawienie

Ale nie mogę znaleźć żadnej dokumentacji, działań, filtrów itp. Po załadowaniu tych ustawień.


źródło
Myślę, że to zależy od twojego tematu. Ale jako punkt wyjścia codex.wordpress.org/Navigation_Menus powinien pomóc !!
sri
1
Widziałem ten link wiele razy, nie ma informacji o dodawaniu ustawień do menu.
Auć. Myślę, że jest to natywna opcja Joomla, najwyraźniej nie w WordPress. W swojej witrynie możesz utworzyć niestandardowe pliki kategorii / pages.php, a następnie dodać do niej unikalne niestandardowe menu, ale jest to całkowity ból w szyi. Będziesz miał cztery wyjściowe strony .php i cztery unikalne menu, po jednym dla każdego wyboru powyżej. Jednym z łatwych sposobów wdrożenia jest użycie widżetów paska bocznego jako podstawowego narzędzia nawigacyjnego. niestandardowe narzędzie do widgetów menu jest dość proste. Utwórz menu dla każdej strony, zakładając, że masz unikalne szablony dla każdej strony. Uwaga: pasek boczny nie jest najlepszym słowem. Możesz umieścić widget w dowolnym miejscu.
zipzit
Mam świadomość pasków bocznych i widżetów. Te małe części witryny, które również nie są połączone ze stroną. Nie chcę używać pasków bocznych i widżetów i wyłączyłem je, ponieważ nie używam żadnego z nich. W każdym razie myślę, że lokalizacje menu są ustawieniami menu, a nie ustawieniem widżetu zawierającego menu.
Czy twoje pytanie brzmi „Jak dodać niestandardowe ustawienia menu?” czy też jest to „Jak użyć niestandardowych ustawień menu, aby wyświetlić menu tylko na niektórych stronach?”?
engelen

Odpowiedzi:

3

To fajna opcja, ale zgadzam się z sri, teraz naprawdę zależy to od twojego tematu. Można to obejść za pomocą metody is_page () . Musisz napisać coś takiego w pliku motywu page.php :

<?php
    if (is_page('projects')) {
        if ( is_active_sidebar( 'sidebar-navigation' )) {
            dynamic_sidebar( 'sidebar-navigation' );
        }
    }
?>

Jeśli chcesz pokazać pasek boczny również na innych stronach, możesz użyć logiki lub w ten sposób:

if (is_page('projects') || is_page('home') || is_page('post-page'))
Bernie
źródło
Nie znam lepszego rozwiązania, ale jest to naprawdę zła praktyka w świecie kodowania. Myślę, że przynajmniej może przejdzie przez tablicę lub coś, a następnie wykona zamianę menu. Zdecydowanie doceniam odpowiedź. Westchnienie
BRogers
1

Myślę, że użycie wtyczki do tego jest lepsze, więc możesz zachować funkcjonalność, nawet jeśli zmienisz motywy w przyszłości. Sprawdź tę wtyczkę. Robi to, co chcesz, ale nieco inaczej niż to, z czego ją wyśmiewałeś.

https://wordpress.org/plugins/page-specific-menu-items/

Jeśli to pomoże, proszę zagłosować lub zaakceptować jako odpowiedź. Dzięki!

Mark.C
źródło
Próbowałem tej wtyczki. Dzięki tej wtyczce możesz wybrać tylko menu dla określonego typu posta. Chcę wybrać menu dla każdej strony.
Jeśli masz tylko jedno menu w witrynie i chcesz po prostu ukryć niektóre łącza w tym menu, gdy użytkownik jest na określonej stronie, ta wtyczka to robi. Po wybraniu typu wpisu, w którym chcesz menu (strona jest tym, czego chcesz lub więcej), a następnie przejdź do edycji strony i możesz sprawdzić linki, które chcesz ukryć. Ten drugi robi to w drugą stronę. Wybierasz menu z metaboksu na ekranie edycji strony, więc potrzebujesz wielu menu do wyboru: wordpress.org/plugins/ce-wp-menu-per-page
Mark.C
1

Tak można to zrobić w nagłówku Twenty Twelve themes skopiowanym do motywu podrzędnego.

<?php if ( is_page('projects') ) : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'conditional-menu-name', 'menu_class' => 'nav-menu' ) ); ?>
<?php else : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'Primary', 'menu_class' => 'nav-menu' ) ); ?>
<?php endif; ?>

Utwórz nowe menu z elementami, które chcesz wyświetlić, i zamień nazwę menu warunkowego w powyższym kodzie na nazwę swojego menu.

Nazwy menu_klasy mogą wymagać zmiany dla motywów innych niż Dwadzieścia Dwanaście.

Źródło

Brad Dalton
źródło
1

Wiem, że ten wątek jest stary, ale na wypadek gdyby ktoś potrzebował znaleźć odpowiedź na to pytanie, chciałbym zasugerować menu warunkowe w temacie https://themify.me/conditional-menus . Ty wybierasz, które menu ma być używane, według strony, kategorii, meta, wszystkiego. i jest za darmo :) mam nadzieję, że to pomoże

rosane
źródło
0

Jeśli chcesz ponownie zaangażować widżety i chcesz prostego rozwiązania, możesz użyć wtyczki o nazwie Widżety wyświetlające. Użyłem tego i używam fragmentu tekstu, w którym możesz dodać linki do miejsca, do którego chcesz się udać. Działa, czy linki znajdują się na Twojej stronie, czy na innej stronie. Ma spację poniżej tekstu, w której możesz wybrać, które strony mają być pokazywane lub ukryte. Nadal możesz usunąć widżety, których nie używasz.

Przez jakiś czas bawiłem się menu, zanim szukałem i znalazłem tę wtyczkę. To dobrze działa.

Można go znaleźć w sekcji Wtyczki WordPress.org.

Susan
źródło
Dziękuję Ci bardzo! Ale nie szukam dodatkowej wtyczki. Nie używam widżetów, ponieważ te pływające części witryny są zbyt trudne do zrozumienia dla niektórych moich klientów.
0

Jedną z opcji byłoby stworzenie niestandardowych szablonów dla każdego menu, które masz. (To pole wyboru odnosi się do lokalizacji motywu). Następnie na każdej stronie wybierasz szablon, którego chcesz użyć, a także będzie korzystał z menu powiązanego z tym szablonem.

https://codex.wordpress.org/Page_Templates

Daje to ten sam wynik, którego myślę, że szukasz, ale zamiast mówić każdemu menu, na której stronie wyświetla się, będziesz mówił każdej stronie, jakie menu będzie na nim wyświetlane. Dodatkową zaletą robienia tego w ten sposób jest to, że nie ma możliwości przypadkowego powiadomienia dwóch menu o tym samym miejscu w tym samym czasie.

KnightHawk
źródło
Tak, spojrzałem na to. Ale programista nigdy nie wie, ile menu potrzebuje użytkownik. Muszę więc stworzyć wiele szablonów, aby je wszystkie pokryć. template_a.php, template_b.php, template_c.phpItd.