Ein Teil meiner Arbeit besteht darin, Wordpress-Websites zu erstellen. Normalerweise arbeite ich an meinem Laptop, bis ich etwas habe, das gut genug ist, um auf den Testserver hochgeladen zu werden, auf dem der Client es überprüft.
Ich erstelle einen VirtualHost für jedes neue Projekt, also arbeite ich immer mit einer Wordpress-Installation in einer Domäne, die aussieht http://local.example.com/
, aber wenn die Site auf den Testserver hochgeladen wird (nicht von mir kontrolliert), kann die Domäne so etwas wie enden http://testserver.com/arbitrary/path/example/
.
Das Problem ist, dass, wenn ich einen benutzerdefinierten Link zu einem Menü hinzufüge, das beispielsweise auf verweist, das /events/
lokale Erstellen eines Links problemlos funktioniert. Auf http://local.example.com/events/
dem Testserver zeigt der Link jedoch auf http://testserver/events/
, was offensichtlich nicht richtig ist.
Ich möchte dem benutzerdefinierten Link eine URL geben, die sowohl in meiner lokalen Umgebung als auch auf dem Testserver funktioniert.
Das Problem des Änderns der Optionen home
und von siteurl
Wordpress bewältige ich bereits durch:
- Ändern Sie diese Einstellungen in der lokalen Datenbank
- Erstellen eines Speicherauszugs der Datenbank
- Aktualisieren Sie die Datenbank auf dem Server
- Wiederherstellen der lokalen Optionen.
Ich möchte keine vollständigen URLs für die benutzerdefinierten Links verwenden und diese nicht jedes Mal durch die Server-URL ersetzen müssen, wenn ich die Datenbank des Servers aktualisieren muss.
Für Links innerhalb des Beitragsinhalts gibt es ein Plugin, das das Problem behebt , indem zwei Shortcodes hinzugefügt werden: http://wordpress.org/extend/plugins/url-shortcodes/ , aber ich konnte für benutzerdefinierte Links nichts Ähnliches finden .
Antworten:
Ich suchte auch nach einer Lösung dafür und fand eine einfache.
Folgendes müssen Sie in das URL-Feld einfügen:
Es funktioniert gut!
Beste Grüße Chris
quelle
Mit dem
nav_menu_link_attributes
Filter können Sie das href-Attribut für jedes Menüelement überprüfen und ändern, bevor es ausgegeben wird.In diesem Beispiel suchen wir nach allen href-Attributen, die mit einem beginnen
/
, und stellen in diesem Fall die URL der Testsite voran:Sie können ein einfaches Plugin mit diesem Code erstellen und es nur auf Ihrem Testserver aktivieren oder eine Art Flag erstellen, das diesen Filter bedingt anwendet, wenn die Testsite-Umgebung vorhanden ist.
quelle
Durch die Verwendung des
<base href=" ">
Tags im Kopf-Meta erhalten alle relativen Anker auf der Seite eine Basis-URL.Referenz:
https://www.w3.org/TR/html4/struct/links.html
12.4 Pfadinformationen: das BASE-Element
Relative benutzerdefinierte Links in WordPress:
Wenn Sie möchten, dass die Website-URL die Basis-URL aller Anker ist, fügen Sie diese zu theme / header.php in den
<head>
folgenden Bereichen hinzu :<base href="<?php echo site_url(); ?>/">
Ich weiß, dass es zu spät für Sie sein könnte, aber jemand anderem helfen könnte.
quelle
ehepperle.com/sites/in-progress/some-wp-site-root/
sei denn, Sie legen den Site-Stamm explizit fest. Die Geschwindigkeit der Webentwicklung wird durch die Verwendung vonbase
Tags nicht merklich verbessert , da Sie bei der Migration auf eine andere Site die Basis neu definieren müssen. Ich kann jedoch den Wert sehen, wenn ich die Länge von href-Werten reduziere.Auf einer benutzerdefinierten URL im Menü-Setup können relative Links zu [blogurl] verwendet werden. Das Geheimnis ist, die relative URL mit einer einzigen zu beginnen
/
. Wenn ein einzelnes / die benutzerdefinierte URL startet, wird das System der typischen URL nicht voranstellen,http://
und die aktuelle blogURL wird zur Ausführungszeit in der Ziel-URL generiert.BEISPIEL
Wenn Sie zu Ihrer Homepage wechseln möchten, geben Sie einfach
/
die benutzerdefinierte URL einWenn Sie zur Indexseite im Ordner wechseln möchten, geben Sie
bbforums
diese/bbforums
als benutzerdefinierte URL ein.Auf diese Weise können Sie eine Site in eine Testdomäne verschieben, ohne die neue blogURL in allen benutzerdefinierten Links für die Menüs fest codieren zu müssen.
Beispiel:
Wenn sich mein Blog
http://example.com
in einer Unterdomäne befindet und ich es testen möchte,http://test.example.com
kann die Site mithilfe der oben angegebenen relativen URL-Konvention ohne Menüprobleme zwischen Test und Produktion verschoben werden. Ich habe diesen Ansatz erfolgreich mit dem XCloner-Plugin getestet, um die Site zu verschieben.quelle
Zuerst müssen Sie dieses Plugin für URL-Shortcodes installieren .
Fügen Sie diesen Code zu Ihrer
functions.php
Datei in Ihrem Thema hinzu:Dann müssen Sie die
wp_nav_menu
Funktion aus den Vorlagendateien aufrufen :Das ist es. Gehen Sie dann zum Back-End-Menüabschnitt.
Wenn ich beispielsweise die Seiten-URL einem benutzerdefinierten Link zuweisen möchte, füge ich sie folgendermaßen hinzu:
Jetzt können Sie zum Frontend gehen und prüfen, ob der Shortcode funktioniert.
quelle