Oprócz odpowiedzi Rajeeva Vyasa nie musisz przekazywać żadnych niepustych parametrów do add_query_arg()
. Poniższe zawsze działało dla mnie dobrze:
// relative current URI:
$current_rel_uri = add_query_arg( NULL, NULL );
// absolute current URI (on single site):
$current_uri = home_url( add_query_arg( NULL, NULL ) );
Funkcja powraca $_SERVER[ 'REQUEST_URI' ]
i ma urlencode_deep()
do niej zastosowanie . Zobacz https://github.com/WordPress/WordPress/blob/3.8/wp-includes/functions.php#L673
Edycja:
Ponieważ $_SERVER[ 'REQUEST_URI' ]
reprezentuje niefiltrowane dane wejściowe użytkownika, należy zawsze unikać wartości zwracanej w add_query_arg()
przypadku zmiany kontekstu. Na przykład użyj esc_url_raw()
do użycia DB esc_attr()
lub esc_url()
HTML.
Aktualizacja
Pokazany przykład, który powinien utworzyć bezwzględny identyfikator URI (zawierający schemat i host), nie działa na wielu witrynach z podkatalogami, ponieważ home_url()
zwróciłby pełny identyfikator URI zawierający segment ścieżki. Lepszym rozwiązaniem dla kodu obsługującego wiele lokalizacji byłoby:
// absolute URI in multisite aware environment
$parts = parse_url( home_url() );
$current_uri = "{$parts['scheme']}://{$parts['host']}" . add_query_arg( NULL, NULL );
Rdzeń WordPress nie obsługuje portu, użytkownika ani hasła w adresie URL witryny z wieloma witrynami, więc powinno to wystarczyć.
Nie jest to funkcja, ale zdecydowanie używa kodu wordpress.
http://kovshenin.com/2012/current-url-in-wordpress/
źródło
year
są dodawane do ciągu zapytania, nawet jeśli wcześniej ich tam nie było, a inne parametry, na przykładreplytocom
parametr, gubią się. Czy znasz na to rozwiązanie?1)
$_SERVER['REQUEST_URI']
- Zwraca adres URL, aby uzyskać dostęp do strony wykonującej skrypt. Jeśli musisz wpisać,http://www.example.com/product.php?id=5
aby uzyskać dostęp do strony, oznacza to$_SERVER['REQUEST_URI']
powrót/product.php?id=5
.2)
$_SERVER['DOCUMENT_ROOT']
- Zwraca katalog główny serwera określony w pliku konfiguracyjnym serwera. Ta zmienna zwykle zwraca ścieżkę jak/usr/yoursite/www
w Linuksie iD:/xamps/xampp/htdocs
Windows.3)
$_SERVER['HTTP_HOST']
- Zwraca nazwę hosta znalezioną w nagłówku http. Zmienna ta zazwyczaj zwraca ścieżkę jakexample.com
wtedy, gdy znajdzieszhttp://example.com
się w przeglądarce adresu bar i powrotuwww.example.com
, kiedy widziszhttp://www.example.com
na adres bar. Jest to bardzo przydatne, gdy chcesz zachować sesję podczas dokonywania płatności online za pomocą PHP, ponieważ sesja przechowywana dlahttp://example.com
nie jest taka sama jak dlahttp://www.example.com
.4)
$_SERVER['HTTP_USER_AGENT']
- Zwraca dane agenta użytkownika (przeglądarki) uzyskujące dostęp do strony internetowej. Możemy użyćstrpos($_SERVER["HTTP_USER_AGENT"],”MSIE”)
do wykrycia Microsoft Internet Explorera lub możesz użyćstrpos($_SERVER["HTTP_USER_AGENT"],”Firefox”)
do wykrycia przeglądarki Firefox w PHP.5)
$_SERVER['PHP_SELF']
- Zwraca nazwę pliku aktualnie wykonywanego skryptu. Załóżmy, że uzyskujesz dostęp do adresu URL,http://www.example.com/product.php?id=5
a następnie$_SERVER['PHP_SELF']
zwraca/product.php
skrypt.6)
$_SERVER['QUERY_STRING']
- Zwraca ciąg zapytania, jeśli ciąg zapytania jest używany do uzyskania dostępu do aktualnie wykonywanego skryptu. Ciągi zapytań to te, które są dostępne po „?” sign.Jeśli użyjesz$_SERVER['QUERY_STRING']
w skrypcie wykonującym następujący adres URL,http://www.example.com/index.php?id=5&page=product
wówczas zwraca onid=5&page=product
skrypt.7)
$_SERVER['REMOTE_ADDR']
- Zwraca adres IP zdalnego urządzenia uzyskującego dostęp do bieżącej strony. Ale nie można polegać na$_SERVER['REMOTE_ADDR']
uzyskaniu prawdziwego adresu IP komputera klienta. Zobacz ten artykuł, aby dowiedzieć się, jak uzyskać prawdziwe dodatki IP w PHP.8)
$_SERVER['SCRIPT_FILENAME']
- Zwraca bezwzględną ścieżkę do aktualnie wykonywanego pliku. Zwraca ścieżkę jakvar/example.com/www/product.php
w systemie Linux i ścieżkę jakD:/xampp/xampp/htdocs/test/example.php
w systemie Windows.źródło
wp_guess_url jest tym, czego szukasz.
źródło
add_query_args( null, null )
utworzy element tablicy z pustym key ($qs[""] = null
), chociaż nie wpłynie to na wynik.Zgodnie z add_query_arg () | Funkcja | Zasoby dla programistów WordPress , drugi, trzeci parametr są opcjonalne i można je pominąć.
add_query_args( null, null )
może być krótszy .Istnieje również najkrótsza wersja, chociaż nie jest zalecana, ponieważ wymagany jest pierwszy parametr.
Ponadto należy zauważyć, że zarówno
home_url( add_query_vars( [] ) )
ihome_url( add_query_arg( null, null ) )
może nie powrócić rzeczywisty adres URL , gdy WordPress jest zainstalowany w podkatalogu.np.
https://example.com/wp/wp/foo
może zostać zwrócony, gdy WordPress jest zainstalowanyhttps://example.com/wp/
.Aktualizacja: 2017/01/23
Moja wersja oparta na rozwiązaniu Davida, aby uzyskać bezwzględny adres URL.
źródło
Dla mnie
<?php esc_url(the_permalink()); ?>
działa (na stronie archiwum z paginacją).źródło
the_permalink()
powtarza ucieczkowy link bezpośredni, nic nie zwraca.esc_url()
Nie dostanie nic, a jeśli miałoby to byłoby zbiegłym URL.Nie chcę teraz paginacji, ale możesz użyć tej funkcji, aby uzyskać adres URL w pętli
Lub jeśli nie wolisz używać php, możesz również wybrać metodę jquery tutaj (pomoże to sprawić, że będzie działać poza pętlą)
lub jeśli wolisz korzystać z funkcji php, musisz uzyskać identyfikator poza pętlą
źródło
the_permalink()
nie potrzebuje identyfikatora, gdy jest wywoływany w pętli.Możesz użyć funkcji wordpress, aby uzyskać bieżący adres URL strony
Zwróci ci link URL strony curremt.
źródło
the_permalink()
będzie drukować URL bieżącego wątku. Ale to nie będzie działać dla innych żądań i nie będzie zawierać zmiennych takich jak paginacja. Tak naprawdę nie szuka odpowiedzi @ René Schubert.