Ich möchte benutzerdefinierten PHP-Code hinzufügen, um sicherzustellen, dass die URL dieser Seite immer dann auf dem Bildschirm angezeigt wird, wenn eine Seite meiner Website in meinem Browser geladen wird. Ich kann verwenden echo get_permalink()
, aber das funktioniert nicht auf allen Seiten. Auf einigen Seiten (z. B. meiner Homepage ) werden mehrere Beiträge get_permalink()
angezeigt. Wenn ich auf diesen Seiten verwende, wird die URL der angezeigten Seite nicht zurückgegeben (ich glaube, sie gibt die URL des letzten Beitrags in der Schleife zurück). Wie kann ich für diese Seiten die URL zurückgeben?
Kann ich get_permalink()
einen bestimmten Haken anhängen , der ausgelöst wird, bevor die Schleife ausgeführt wird? Oder kann ich irgendwie aus der Schleife ausbrechen oder sie zurücksetzen, wenn sie abgeschlossen ist?
Vielen Dank.
quelle
is_home()
oderis_page( 'fr' )
etc verwenden und das Skript nur dann in die Warteschlange stellen, wenn es wahr ist?if ( home_url( $wp->request ) == home_url() ) { wp_enqueue_script();}
Dies scheint auf jeder Homepage zu funktionieren , unabhängig von der Sprache. Schlugen Sie das vor?$_SERVER['REQUEST_URI']
und begleiten? Siehe diese Frage: stackoverflow.com/q/6768793/247696Antworten:
get_permalink()
ist nur für einzelne Seiten und Posts wirklich nützlich und funktioniert nur innerhalb der Schleife.Der einfachste Weg, den ich gesehen habe, ist der folgende:
$wp->request
Enthält den Pfadteil der URL, z./path/to/page
undhome_url()
gibt die URL unter "Einstellungen"> "Allgemein" aus. Sie können jedoch einen Pfad anhängen, sodass der Anforderungspfad an die Ausgangs-URL in diesem Code angehängt wird.Beachten Sie, dass dies wahrscheinlich nicht mit Permalinks funktioniert, die auf Normal gesetzt sind, und Abfragezeichenfolgen (der
?foo=bar
Teil der URL) weglässt.Um die URL zu erhalten, wenn Permalinks auf "plain" gesetzt sind, können Sie sie
$wp->query_vars
stattdessen verwenden, indem Sie sie übergeben anadd_query_arg()
:Sie können diese beiden Methoden auch kombinieren, um die aktuelle URL einschließlich der Abfragezeichenfolge abzurufen, unabhängig von den Permalink-Einstellungen:
quelle
echo '//' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
.echo home_url( $wp->request )
. Ich habe auch dafür gesorgtglobal $wp
. Permalinks sind nicht "Normal", sondern auf "Post Name" gesetzt. Ich sehe auch keine relevanten PHP-Fehler im Log. Diese spezielle Seite ist Teil meiner Entwickler-Site, die ansonsten für Besucher gesperrt ist. Ich bin mir nicht sicher, ob das wichtig ist oder nicht. edit: Eigentlich halte diesen Gedanken - könnte ein Benutzerfehler sein. Stehen Sietrailingslashit()
sie jedoch je nach Bedarf erweitern.Sie können den folgenden Code verwenden, um die gesamte aktuelle URL in WordPress abzurufen:
Dadurch wird der vollständige Pfad einschließlich der Abfrageparameter angezeigt.
quelle
array()
mit$_GET
. Dh:home_url(add_query_arg($_GET,$wp->request));
quelle
Der folgende Code gibt die aktuelle URL an:
Sie können den folgenden Code verwenden, um die vollständige URL zusammen mit den Abfrageparametern abzurufen.
Dadurch wird der vollständige Pfad einschließlich der Abfrageparameter angezeigt. Dadurch werden die Abfrageparameter beibehalten, sofern sie bereits in der URL enthalten sind.
quelle
wp-admin/plugins.php
meine aktuelle URL, es sind nur der Stammpfad und die Abfragezeichenfolgen.Dies ist ein verbessertes Beispiel, das bereits erwähnt wurde. Es funktioniert, wenn hübsche URLs aktiviert sind. Es wird jedoch verworfen, wenn Abfrageparameter wie / page-slug /? Param = 1 vorhanden sind oder die URL überhaupt hässlich ist.
Das folgende Beispiel funktioniert in beiden Fällen.
quelle
Vielleicht
wp_guess_url()
ist was du brauchst. Verfügbar seit Version 2.6.0.quelle
home_url()
.Warum nicht einfach benutzen?
quelle