WordPress benutzerdefinierte post-Typ-Hierarchie und Menü-highlighting (current_page_parent)
Habe ich einen custom post type von "portfolio" und die Seite mit einer Vorlage, werden alle Beiträge und die entsprechende benutzerdefinierte post-Typ.
Das problem ist, wenn ich per drill-down in die eigentliche post, die post scheint zu sitzen unter 'blog' in der Hauptmenü-highlighting (zeigt current_page_parent als eine Klasse)
Die permalink-url korrekt ist: www.site.com/portfolio/post-slug
Aber das Menü denkt, der Elternteil ist "blog".
Dies ist offensichtlich ein hierarchisches Problem, aber ich weiß nicht, was zu tun ist, um es zu beheben.
InformationsquelleAutor Craig | 2010-07-17
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint dies ein Problem mit dem core-Wordpress-code enthalten; der code, der generiert die Menü-Klassen fügt current_page_parent, um Ihre Blog-Seite, überall, außer bei der Anzeige der statischen Seite Vorlagen.
(Dies wurde diskutiert, der im vorübergehen an http://core.trac.wordpress.org/ticket/13543).
Können Sie jedoch erhalten, um dieses mit einige benutzerdefinierte code mit der page_css_class filter. Zum Beispiel, fügen Sie etwas entlang diesen Linien zu functions.php (nicht 100% getestet):
Austauschen 57 mit der ID Ihres portfolios Seite, natürlich. Entfernt current_page_parent beim Druck der blog-Seite und fügt current_page_parent, um Ihre portfolios Seite, wenn entweder die Anzeige eines einzelnen Portfolios oder die Anzeige des portfolios Seite selbst.
Hier ist meine optimierte und erweiterte version der bereits vorgeschlagenen Lösungen, was ziemlich viel ist vollständig automatisiert. Nicht mehr extra CSS-oder Menü-Parametern erforderlich.
Dieser version dynamisch wird eine Liste der benutzerdefinierten post-Typen und wenn der aktuelle post geben Sie eine benutzerdefinierte post-Typ, dann entfernt er den 'current_page_parent' - Klasse von der alle Menüpunkte.
Außerdem überprüft er jeden Menüpunkt, um zu sehen, wenn es für eine Seite mit, eine Seite Vorlage, wie "page-{custom_post_type_slug}.php", und, wenn ja, füge die 'current_page_parent' Klasse.
Den filter der Priorität 1, wie Sie einige der Themen, ersetzen Sie die current_page_parent/etc. Klassen mit einer Klasse, wie "aktiv" (z.B. "Wurzeln" tut dies), so dass dieser filter muss zuerst ausgeführt.
Schließlich, es macht Verwendung von 3 statische Variablen, da diese Funktion immer wieder aufgerufen und diese (offensichtlich) bleiben die gleichen durch alle Gespräche.
PS. Nur auf eine Schwachstelle in allen nicht-CSS-Lösungen, die ich bisher gesehen habe, einschließlich meiner eigenen:
Etwas, das nicht berücksichtigt wird, ist die Hervorhebung der Menüpunkt parent/ancestor eines Elements Verknüpfung zu einer Seite, die zeigt Beiträge der aktuellen custom-post-Typ. Betrachten Sie einen custom post type "Produkt" und ein Menü, wie:
"Produkte" ist eine Seite mit einer Vorlage "page-product.php" und zeigt eine übersicht der Beiträge vom Typ "Produkt". Es wird hervorgehoben, aufgrund der geposteten Lösung. Aber 'Gesellschaft', wie seine Eltern/Vorfahren sollte auch hervorgehoben werden, ist es aber nicht. Etwas im Auge zu behalten.
WP-ticket: http://core.trac.wordpress.org/ticket/16382
Hab ich etwas mehr suchen, um auf dieser und anderen Weg gefunden, dies zu tun.
}
Bekam ich ein Formular von diesem post und dann verändert es auch entfernen Sie die "current_page_parent" - Klasse aus der blog-Seite.
https://wordpress.stackexchange.com/questions/3014/highlighting-wp-nav-menu-ancestor-class-w-o-children-in-nav-structure/3034#3034
Herzlich
Vayu
Hier ist eine Lösung, die für mich gearbeitet, ohne zu definieren, meine custom post type oder Menü-id oder Seiten-id in den code:
http://dtbaker.net/web-development/how-to-stop-wordpress-automatically-highlighting-the-blog-page-in-the-menu/