Derzeit arbeite ich an einer WordPress-Website, aber ich bin auf ein kleines Problem gestoßen.
ich benutze wp_page_menu um eine Navigationsleiste zu erstellen, um zu meinen anderen Seiten zu gelangen. Jetzt leitet es mich an www.mysite.com/sportaber ich brauche es, um mich dorthin zu lenken www.mysite.com/sport#header oder www.mysite.com/sport/#header.
Weiß jemand wie ich das machen kann?
Ich habe versucht, verschiedene Plugins zu verwenden oder den Slug oder Permalink zu ändern, aber das hat mir nicht das gewünschte Ergebnis gebracht.
Danke für die Hilfe Jungs!
Benötigen Sie es für alle Links oder nur für einen einzelnen Link?
– Stewartside
30. April 2015 um 8:53 Uhr
@Stewartside Auf allen Links wäre ein anderer am besten, aber auf allen Links könnte auch das gleiche funktionieren
– Jeramai
30. April 2015 um 8:55 Uhr
Warum nicht einfach ein benutzerdefiniertes Menü im Admin erstellen? Anstatt eine Funktion zu verwenden, um die Seiten abzurufen, können Sie sie manuell mit dem Menüelementtyp “Link” verlinken … Klingt einfacher als die Alternative.
– rnevius
30. April 2015 um 9:11 Uhr
@rnevius Ich hatte gehofft, das zu vermeiden. Nun, wenn es nicht wirklich etwas gibt, was ich dagegen tun könnte, dann denke ich, ich sollte mit einem benutzerdefinierten Menü gehen.
– Jeramai
30. April 2015 um 9:18 Uhr
Christian Nguyen
OK. Hier ist Ihr Code. Ich überschreibe einfach den Standard-Walker von WordPress. Bitte konzentrieren Sie sich in diesem Code auf den Text #header.
Wenn Sie sich Sorgen um diesen Code machen. Sie können also zur Datei gehen: …wp-includes/post-template.php in Zeile 1238. Es ist derselbe Code, aber ich habe #header nach get_permalink() hinzugefügt.
Nett! Wusste nicht wp_page_menu könnte einen Walker verwenden, es ist nicht dokumentiert. noch.
– Bloße Entwicklung
30. April 2015 um 11:08 Uhr
Christians Antwort ist großartig und hat mich dazu gebracht, über alternative Möglichkeiten nachzudenken, insbesondere über solche, die es Ihnen ermöglichen, Ihre zu verwenden wp_page_menu() funktionieren wie ursprünglich gewünscht. Hier ist also ein anderer Ansatz mit einem Filter.
Fügen Sie diese Funktion vor Ihrer hinzu wp_page_menu() Aufruf oder in der functions.php
function wp_list_pages_addhash($output) {
$dom = new DOMDocument;
$dom->loadHTML($output);
$links = $dom->getElementsByTagName('a');
foreach ($links as $link) {
$link->setAttribute('href', $link->getAttribute('href') . '#header');
}
$output = $dom->saveHTML();
return $output;
}
add_filter('wp_list_pages', 'wp_list_pages_addhash');
Verwenden Sie dann Ihren wp_page_menu-Aufruf so, wie Sie ihn ursprünglich in Ihrem Design verwendet haben:
wp_page_menu();
Erläuterung: Es findet jedes href-Attribut jedes Links in der Ausgabe von wp_list_pages und fügt am Ende ‘#header’ hinzu. wp_page_menu wiederum nutzt wp_list_pages Ausgabe zu erstellen.
12714500cookie-checkLink-ID in der WordPress-URLyes
Benötigen Sie es für alle Links oder nur für einen einzelnen Link?
– Stewartside
30. April 2015 um 8:53 Uhr
@Stewartside Auf allen Links wäre ein anderer am besten, aber auf allen Links könnte auch das gleiche funktionieren
– Jeramai
30. April 2015 um 8:55 Uhr
Warum nicht einfach ein benutzerdefiniertes Menü im Admin erstellen? Anstatt eine Funktion zu verwenden, um die Seiten abzurufen, können Sie sie manuell mit dem Menüelementtyp “Link” verlinken … Klingt einfacher als die Alternative.
– rnevius
30. April 2015 um 9:11 Uhr
@rnevius Ich hatte gehofft, das zu vermeiden. Nun, wenn es nicht wirklich etwas gibt, was ich dagegen tun könnte, dann denke ich, ich sollte mit einem benutzerdefinierten Menü gehen.
– Jeramai
30. April 2015 um 9:18 Uhr