Wie wird die URL der aktuellen Seite angezeigt?
-
-
Können Sieeinen Kontext angeben,was Siemit dieser URLtunmöchten?Versuchen Sie,gemeinsamnutzbare URLs zuerstellen?Benutzerdefinierte URLsfür Links/Aktionen zusammenstellen?Can you provide some context as to what you would want to do with this URL? Are you trying to create sharable URLs? Assemble custom URLs for links/actions?
- 0
- 2017-07-25
- Tom J Nowell
-
@TomJNowell Ichmöchteein bestimmtes JS-Skriptin die Warteschlange stellen,jedochnur aufbestimmten Seiten (in diesem Fall sind diese Seiten die Startseitemeiner Websitein verschiedenen Sprachen: https://www.example.com/,https://www.example.com/fr/,https://www.example.com/es/usw.).Die JS-Datei wird Server hinzufügen,um Hyperlinks zumehreren Titeln hinzuzufügen,dienur auf der Homepage angezeigt werden.@TomJNowell I would like to enqueue a particular JS script, but only on certain pages (in this case, those pages are the homepage of my site in various languages: https://www.example.com/, https://www.example.com/fr/, https://www.example.com/es/, etc). The JS file will server to add hyperlinks to several titles that appear only on the homepage.
- 0
- 2017-07-25
- cag8f
-
Warumnichteinfach "is_home ()" oder "is_page ("fr ")" usw. verwenden und das Skriptnur dannin die Warteschlange stellen,wennes wahrist?why not just use `is_home()` or `is_page( 'fr' )` etc and only enqueue the script if it's true?
- 0
- 2017-07-25
- Tom J Nowell
-
@TomJNowell Nun,mein Code lautet `if (home_url ($ wp-> request)==home_url ()) {wp_enqueue_script ();}` Dies scheint aufjeder Homepage unabhängig von der Sprache ausgelöst zu werden.Haben Sie das vorgeschlagen?@TomJNowell Well now my code is `if ( home_url( $wp->request ) == home_url() ) { wp_enqueue_script();}` This appears to fire on every home page, regardless of language. Is that what you were suggesting?
- 0
- 2017-07-26
- cag8f
-
Warumnicht `$ _SERVER ['REQUEST_URI']` und Firma verwenden?Siehe diese Frage: https://stackoverflow.com/q/6768793/247696Why not use `$_SERVER['REQUEST_URI']` and company? See this question: https://stackoverflow.com/q/6768793/247696
- 1
- 2019-05-29
- Flimm
-
10 Antworten
- Stimmen
-
- 2017-07-25
get_permalink()
istnurfüreinzelne Seiten und Beiträge wirklichnützlich undfunktioniertnurinnerhalb der Schleife.Dereinfachste Weg,denichgesehen habe,istfolgender:
global $wp; echo home_url( $wp->request )
$wp->request
enthält den Pfadteil der URL,z./path/to/page
undhome_url()
geben die URL unter Einstellungen> Allgemein aus. Sie könnenjedocheinen Pfad anhängen,sodass wir den Anforderungspfad an anhängen die Home-URLin diesem Code.Beachten Sie,dass dies wahrscheinlichnichtmit Permalinksfunktioniert,die auf "Einfach"eingestellt sind,und Abfragezeichenfolgen (der
?foo=bar
-Teil der URL) weglässt.Um die URL zuerhalten,wenn Permalinks auf "Klar"gesetzt sind,können Sie stattdessen
$wp->query_vars
verwenden,indem Sie sie anadd_query_arg()
übergeben:global $wp; echo add_query_arg( $wp->query_vars, home_url() );
Und Sie können diesebeiden Methoden kombinieren,um die aktuelle URLeinschließlich der Abfragezeichenfolge unabhängig von den Permalink-Einstellungen abzurufen:
global $wp; echo add_query_arg( $wp->query_vars, home_url( $wp->request ) );
get_permalink()
is only really useful for single pages and posts, and only works inside the loop.The simplest way I've seen is this:
global $wp; echo home_url( $wp->request )
$wp->request
includes the path part of the URL, eg./path/to/page
andhome_url()
outputs the URL in Settings > General, but you can append a path to it, so we're appending the request path to the home URL in this code.Note that this probably won't work with Permalinks set to Plain, and will leave off query strings (the
?foo=bar
part of the URL).To get the URL when permalinks are set to plain you can use
$wp->query_vars
instead, by passing it toadd_query_arg()
:global $wp; echo add_query_arg( $wp->query_vars, home_url() );
And you could combine these two methods to get the current URL, including the query string, regardless of permalink settings:
global $wp; echo add_query_arg( $wp->query_vars, home_url( $wp->request ) );
-
Wenn Permalinks aufplaingesetzt sind: `echo '//'.$ _SERVER ['HTTP_HOST'].$ _SERVER ['REQUEST_URI']; `.If permalinks set to plain: `echo '//' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];`.
- 7
- 2017-07-25
- Max Yudin
-
@Jacob Ich habe das versucht,aberes scheintnur die URLmeiner Homepage zurückzugeben.Wie Sie oben links auf dieser Seite sehen können (https://dev.horizonhomes-samui.com/properties/hs0540/),habeich Codein "echo home_url ($ wp-> request)"eingefügt.Ich habe sichergestellt,dass auch "global $ wp"enthaltenist.Permalinks sindnicht "Plain",sondern auf "Post Name"gesetzt.Ich sehe auch keine relevanten PHP-Fehlerim Protokoll.Diese spezielle Seiteist Teilmeiner Entwicklungsseite,die ansonstenfür Besuchergesperrtist.Ichbin mirnicht sicher,ob das wichtigist odernicht.edit: Eigentlich halte diesen Gedanken - könnteein Benutzerfehler sein.Bereithalten...@Jacob I tried that, but it seems to be returning the URL of my homepage only. As you can see in the top left on this page (https://dev.horizonhomes-samui.com/properties/hs0540/), where I have inserted code to `echo home_url( $wp->request )`. I have ensured to include `global $wp` as well. Permalinks are not 'Plain,' but set to 'Post Name.' I don't see any relevant PHP errors in the log either. This particular page is part of my dev site, which is otherwise blocked off to visitors. I'm not sure if that matters or not. edit: Actually, hold that thought--could be user error. Stand by...
- 2
- 2017-07-25
- cag8f
-
@Jacobedit 2: OK,dein Codefunktionierttatsächlich.Mein Problem war,dassich den Codein functions.php 'nackt' aufgenommen habe,d. H. Nichtin eine Funktion,die aneinen Hook angehängtist.Ihr Codegab also die URL der Homepage zurück,unabhängig von der Seite,diein meinem Browser angezeigt wurde.Nachdemich den Codein eine Funktion verschoben habe -eine Funktion,die aneinen WP-Hook (wp_enqueue_scripts) angehängtist,wurdetatsächlich die URL der angezeigten Seite zurückgegeben.Kennen Sie den Grundfür dieses Verhalten?Vielleichtmussich dafüreine neue Frageerstellen.@Jacob edit 2: OK your code does indeed work. My issue was that I was including the code in functions.php 'naked,' i.e. not in any function that is attached to a hook. So your code was returning the URL of the homepage, regardless of the page that was displayed in my browser. Once I moved the code inside a function--a function attached to a WP hook (wp_enqueue_scripts), it did indeed return the URL of the displayed page. Do you know the reason for that behavior? Maybe I need to create a new question for that.
- 1
- 2017-07-25
- cag8f
-
@ cag8f Wenn der Codein functions.php "nackt"ist,führen Sieihn aus,bevor alle Eigenschaften des $ wp-Objektseingerichtet wurden.Wenn Sieesin eine Funktioneinbinden,die aneinen geeigneten Hook angehängtist,verzögern Sie seine Ausführung,bisein geeigneter Punktim Wordpress-Code ausgeführt wird.@cag8f If the code sits "naked" in functions.php then you are running it before all the properties of the $wp object have been set up. When you wrap it in a function attached to an appropriate hook then you are delaying its execution until a suitable point in the Wordpress code run.
- 3
- 2018-04-05
- Andy Macaulay-Brook
-
Diese Methoden sind allefantastisch undgroßartige Ideenfür die Arbeitmit WordPress.Sie könnenihnenjedochje nach Ihren Anforderungen `trailingslashit ()` hinzufügen.These methods are all awesome, and great ideas for working with WordPress. You might add `trailingslashit()` to them though, depending on your needs.
- 0
- 2019-10-17
- Jake
-
- 2018-04-05
Sie können denfolgenden Code verwenden,um diegesamte aktuelle URLin WordPress abzurufen:
global $wp; $current_url = home_url(add_query_arg(array(), $wp->request));
Hier wird der vollständige Pfadeinschließlich der Abfrageparameter angezeigt.
You may use the below code to get the whole current URL in WordPress:
global $wp; $current_url = home_url(add_query_arg(array(), $wp->request));
This will show the full path, including query parameters.
-
Hallo,wenn Sie sich https://developer.wordpress.org/reference/functions/add_query_arg/ansehen,werden Siefeststellen,dass Ihr Code vorhandene Abfrageparameternicht wirklichbeibehält.Hi - if you have a look at https://developer.wordpress.org/reference/functions/add_query_arg/ you'll see that your code doesn't actually preserve existing query parameters.
- 0
- 2018-04-05
- Andy Macaulay-Brook
-
Um die Abfrageparameterbeizubehalten,müssen Sie das leere Array () durch $ _GETersetzen.dh: `home_url (add_query_arg ($ _ GET,$ wp-> request));`To preserve query parameters you'd need to replace the empty `array()` with `$_GET`. ie: `home_url(add_query_arg($_GET,$wp->request));`
- 5
- 2018-06-14
- Brad Adams
-
Esfunktioniertnicht,wenn WordPressim UnterverzeichnisinstalliertistIt won’t work if WordPress is installed in subdirectory
- 0
- 2018-11-26
- ManzoorWani
-
- 2019-10-21
Warumnichteinfach verwenden?
get_permalink(get_the_ID());
Why not just use?
get_permalink(get_the_ID());
-
+1 Alle anderen Antworten sind viel zu kompliziert,diesistnur dieeinfachste Lösung+1 all other answers are much to complicated, this is just the simplest solution
- 2
- 2020-04-16
- Mark
-
Diesist dereinfachste Weg.+1This is the easiest way. +1
- 1
- 2020-05-23
- Syafiq Freman
-
funktioniertnichtmit Blog-Kategorien aufmeiner Websitedoesn't work with blog categories on my site
- 0
- 2020-06-21
- Iggy
-
Verwenden Siefür Kategorieseiten `get_category_link (get_query_var ('cat'));`For category pages, use `get_category_link( get_query_var( 'cat' ) );`
- 0
- 2020-06-23
- Dario Zadro
-
- 2018-12-28
Derfolgende Codegibt die aktuelle URL an:
global $wp; echo home_url($wp->request)
Mit demfolgenden Code können Sie die vollständige URL zusammenmit den Abfrageparametern abrufen.
global $wp; $current_url = home_url(add_query_arg(array($_GET), $wp->request));
Hier wird der vollständige Pfadeinschließlich der Abfrageparameter angezeigt.Dadurch werden die Abfrageparameterbeibehalten,wenn siebereitsin der URLenthalten sind.
The following code will give the current URL:
global $wp; echo home_url($wp->request)
You can use the below code to get the full URL along with query parameters.
global $wp; $current_url = home_url(add_query_arg(array($_GET), $wp->request));
This will show the full path, including query parameters. This will preserve query parameters if already in the URL.
-
Dieses Snippet überspringt "wp-admin/plugins.php"in meiner aktuellen URL. Esistnur der Stammpfad und die Abfragezeichenfolgen.This snippet skips `wp-admin/plugins.php` in my current URL, it's only the root path and query strings.
- 0
- 2019-08-03
- Ryszard Jędraszyk
-
- 2018-11-29
function current_location() { if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $protocol = 'https://'; } else { $protocol = 'http://'; } return $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; } echo current_location();
function current_location() { if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $protocol = 'https://'; } else { $protocol = 'http://'; } return $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; } echo current_location();
-
Können Sieerklären,wie und warum dieser Code die Frage löst?Can you explain how and why this code solves the question?
- 0
- 2018-11-29
- kero
-
Meiner Meinungnach dieflexibelste Lösung.Esfunktioniert aufjeder WP-Seite (sogar auf wp-admin,wp-login.php,Archivseiten usw.).Beachten Sienur,dasses keine URL-ParameterenthältIn my opinion the most flexible solution. It works on any WP page (even on wp-admin, wp-login.php, archive pages, etc). Just notice, that it does not include any URL params
- 0
- 2019-04-01
- Philipp
-
- 2018-06-11
Diesisteine verbesserte Beispielmethode,die zuvorerwähnt wurde.Esfunktioniert,wenn hübsche URLs aktiviert sind. Es wirdjedoch verworfen,wenn Abfrageparameter wie /page-slug/? Param=1 vorhanden sind oder die URL überhaupt hässlichist.
Dasfolgende Beispielfunktioniertin beiden Fällen.
$query_args = array(); $query = wp_parse_url( $YOUR_URL ); $permalink = get_option( 'permalink_structure' ); if ( empty( $permalink ) ) { $query_args = $query['query']; } echo home_url( add_query_arg( $query_args , $wp->request ) )
This is an improved way of example that mentioned previously. It works when pretty URLs are enabled however it discards if there is any query parameter like /page-slug/?param=1 or URL is ugly at all.
Following example will work on both cases.
$query_args = array(); $query = wp_parse_url( $YOUR_URL ); $permalink = get_option( 'permalink_structure' ); if ( empty( $permalink ) ) { $query_args = $query['query']; } echo home_url( add_query_arg( $query_args , $wp->request ) )
-
- 2019-10-01
Vielleichtist
wp_guess_url()
das,was Sietunbrauchen.Verfügbar seit Version 2.6.0.Maybe
wp_guess_url()
is what you need. Available since version 2.6.0.-
Dieserrätnur die Basis-URL.Im Frontend haben Sieeinen ähnlichen Effekt wie "home_url ()".This just guesses the base URL. On the frontend, you end up with a similar effect to `home_url()`.
- 0
- 2019-10-17
- Jake
-
- 2020-04-04
Nach so viel Rechercheeinereinfachen Aufgabefunktioniertfür unseine Mischung aller obengenannten Antworten:
function get_wp_current_url(){ global $wp; if('' === get_option('permalink_structure')) return home_url(add_query_arg(array($_GET), $wp->request)); else return home_url(trailingslashit(add_query_arg(array($_GET), $wp->request))); }
Keinfehlender Schrägstrich am Ende und so weiter.Da die Frage-ID zur Ausgabe der aktuellen URLgilt,kümmert sich diesnicht um Sicherheit und andere Dinge.Hash wie #comment am Ende kannjedochnichtin PHPgefunden werden.
After so much research of a simple task, a mix of all answers above works for us:
function get_wp_current_url(){ global $wp; if('' === get_option('permalink_structure')) return home_url(add_query_arg(array($_GET), $wp->request)); else return home_url(trailingslashit(add_query_arg(array($_GET), $wp->request))); }
No missing slash at the end and so on. As the question id about output the current url, this doesnt care about security and stuff. However, hash like #comment at the end cant be found in PHP.
-
- 2020-07-15
Dies hatbei mirfunktioniert (kurze und saubere Lösung,die auch die Abfragezeichenfolgenin der URLenthält):
$current_url = add_query_arg( $_SERVER['QUERY_STRING'], '', home_url( $wp->request ) );
Die Ausgabe-URL sieht wiefolgt aus:
http://sometesturl.test/slug1/slug2?queryParam1=testing&queryParam2=123
Die Lösung wurde von hier
übernommenThis is what worked for me (short and clean solution that includes the query strings in the URL too):
$current_url = add_query_arg( $_SERVER['QUERY_STRING'], '', home_url( $wp->request ) );
The output URL will look like below
http://sometesturl.test/slug1/slug2?queryParam1=testing&queryParam2=123
The solution was taken from here
-
- 2020-07-28
Mirist klar,dass dieseine alte Frageist,abereine Sache,diemir aufgefallenist,ist,dassniemandmit
get_queried_object()
erwähnt hat.Esisteine globale wp-Funktion,die alleserfasst,was sich auf die aktuelle URLbezieht,auf der Sie sichbefinden.Wenn Sie sichbeispielsweise aufeiner Seite odereinem Beitragbefinden,wirdein Beitragsobjekt zurückgegeben.Wenn Sie sichin einem Archivbefinden,wirdein Post-Typ-Objekt zurückgegeben.
WP verfügt auch übereine Reihe von Hilfsfunktionen,wie z. B.
get_post_type_archive_link
,denen Sie das Feldfür den Beitragstyp des Objekts zuweisen und seinen Link wiefolgt zurückgeben könnenget_post_type_archive_link(get_queried_object()->name);
Der Punktist,dass Sie sichnicht aufeinige der obengenannten hackigeren Antworten verlassenmüssen und stattdessen das abgefragte Objekt verwendenmüssen,umimmer die richtige URL zuerhalten.
Diesfunktioniert auchbei Installationenmit mehreren Standorten ohne zusätzliche Arbeit,da Siemit den Funktionen von wpimmer die richtige URLerhalten.
I realize this is an old question, however one thing I've noticed is no-one mentioned using
get_queried_object()
.It's a global wp function that grabs whatever relates to the current url you're on. So for instance if you're on a page or post, it'll return a post object. If you're on an archive it will return a post type object.
WP also has a bunch of helper functions, like
get_post_type_archive_link
that you can give the objects post type field to and get back its link like soget_post_type_archive_link(get_queried_object()->name);
The point is, you don't need to rely on some of the hackier answers above, and instead use the queried object to always get the correct url.
This will also work for multisite installs with no extra work, as by using wp's functions, you're always getting the correct url.
Ichmöchtebenutzerdefinierten PHP-Code hinzufügen,um sicherzustellen,dassbeim Ladeneiner Seite aufmeiner Websitein meinem Browser die URL dieser Seite auf dem Bildschirm angezeigt wird.Ich kann
echoget_permalink ()
verwenden,aber dasfunktioniertnicht auf allen Seiten.Einige Seiten (z. B. meine Homepage ) zeigenmehrere Beiträge an,und wennichget_permalink () Auf diesen Seiten wird die URL der angezeigten Seitenicht zurückgegeben (ichglaube,siegibt die URL des letzten Beitragsin der Schleife zurück).Wie kannichfür diese Seiten die URL zurückgeben?
Kannich
get_permalink ()
aneinen bestimmten Hook anhängen,der ausgelöst wird,bevor die Schleife ausgeführt wird?Oder kannichirgendwie aus der Schleife ausbrechen oder sie zurücksetzen,sobald sie abgeschlossenist?Danke.