Chcę dodać niestandardowy kod PHP, aby upewnić się, że ilekroć strona w mojej witrynie ładuje się w mojej przeglądarce, adres URL tej strony jest wyświetlany na ekranie. Mogę używać echo get_permalink()
, ale to nie działa na wszystkich stronach. Niektóre strony (np. Moja strona główna ) wyświetlają kilka postów, a jeśli korzystam get_permalink()
z tych stron, adres URL wyświetlanej strony nie jest zwracany (uważam, że zwraca adres URL ostatniego postu w pętli). W przypadku tych stron, jak mogę zwrócić adres URL?
Czy mogę dołączyć get_permalink()
do konkretnego haka, który strzela przed wykonaniem pętli? Czy mogę w jakiś sposób wyjść z pętli lub zresetować ją po zakończeniu?
Dzięki.
php
loop
permalinks
urls
cag8f
źródło
źródło
is_home()
albois_page( 'fr' )
etc i tylko enqueue skrypt, czy to prawda?if ( home_url( $wp->request ) == home_url() ) { wp_enqueue_script();}
Wygląda na to, że uruchamia się na każdej stronie głównej, niezależnie od języka. Czy to właśnie sugerowałeś?$_SERVER['REQUEST_URI']
i towarzystwo? Zobacz to pytanie: stackoverflow.com/q/6768793/247696Odpowiedzi:
get_permalink()
jest naprawdę przydatny tylko dla pojedynczych stron i postów i działa tylko w pętli.Najprostszy sposób jaki widziałem to:
$wp->request
zawiera część ścieżki adresu URL, np./path/to/page
ihome_url()
wyświetla adres URL w Ustawieniach> Ogólne, ale możesz do niego dołączyć ścieżkę, dlatego w tym kodzie dołączamy ścieżkę żądania do głównego adresu URL.Zauważ, że to prawdopodobnie nie zadziała z Permalinkami ustawionymi na Zwykły i pozostawi ciągi zapytania (
?foo=bar
część adresu URL).Aby uzyskać adres URL, gdy permalinki są ustawione na zwykły, możesz użyć
$wp->query_vars
zamiast tego, przekazując go doadd_query_arg()
:Możesz połączyć te dwie metody, aby uzyskać bieżący adres URL, w tym ciąg zapytania, niezależnie od ustawień łącza bezpośredniego:
źródło
echo '//' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
.echo home_url( $wp->request )
. Zapewniłem również włączenieglobal $wp
. Permalinki nie są „Zwykłe”, ale ustawione na „Nazwa posta”. Nie widzę też żadnych istotnych błędów PHP w dzienniku. Ta konkretna strona jest częścią mojej witryny deweloperskiej, która w innym przypadku jest zablokowana dla odwiedzających. Nie jestem pewien, czy to ma znaczenie, czy nie. edycja: Właściwie trzymaj się tej myśli - może to być błąd użytkownika. Stand by ...trailingslashit()
je jednak dodać , w zależności od potrzeb.Możesz użyć poniższego kodu, aby uzyskać cały bieżący adres URL w WordPress:
Spowoduje to wyświetlenie pełnej ścieżki, w tym parametrów zapytania.
źródło
array()
z$_GET
. tj .:home_url(add_query_arg($_GET,$wp->request));
źródło
Poniższy kod poda bieżący adres URL:
Możesz użyć poniższego kodu, aby uzyskać pełny adres URL wraz z parametrami zapytania.
Spowoduje to wyświetlenie pełnej ścieżki, w tym parametrów zapytania. Pozwoli to zachować parametry zapytania, jeśli są już w adresie URL.
źródło
wp-admin/plugins.php
w moim bieżącym adresie URL, jest to tylko ścieżka katalogu głównego i ciągi zapytań.Jest to ulepszony sposób wspomnianego wcześniej przykładu. Działa, gdy włączone są ładne adresy URL, ale odrzuca je, jeśli istnieje jakikolwiek parametr zapytania, taki jak / page-slug /? Param = 1 lub adres URL jest w ogóle brzydki.
Poniższy przykład będzie działał w obu przypadkach.
źródło
Może
wp_guess_url()
jest to, czego potrzebujesz. Dostępne od wersji 2.6.0.źródło
home_url()
.Dlaczego nie po prostu użyć?
źródło