Zawsze uważałem, że w WordPressie frustrujące jest to, że obrazy, pliki, linki itp. Są wstawiane do WordPress z bezwzględnym adresem URL zamiast względnego adresu URL. Względny adres URL jest znacznie wygodniejszy do przełączania nazw domen, zmiany między http i https itp. Dzisiaj odkryłem, że jeśli zdefiniujesz WP_CONTENT_URL ze względnym adresem URL, to kiedy wstawisz pliki do postów, używają względnego adresu URL dla src zamiast bezwzględnego adresu URL . Właśnie to, czego zawsze chciałem! Ale oficjalna dokumentacja WordPress mówi, że powinieneś używać pełnego identyfikatora URI jeśli definiujesz WP_CONTENT_URL .
Ustaw WP_CONTENT_URL na pełny identyfikator URI tego katalogu (bez końcowego ukośnika), np
define( 'WP_CONTENT_URL', 'http://example/blog/wp-content');
Wydaje się, że wszystko działa dobrze, gdy używam względnego adresu URL, np
define( 'WP_CONTENT_URL', '/my-content-folder');
Ale czy jest jakiś problem z używaniem względnego identyfikatora URI? Myślę tylko, że musi istnieć powód, dla którego WordPress twierdzi, że powinien być zdefiniowany z pełnym identyfikatorem URI.
Odpowiedzi:
Myślę, że jest to pytanie, na które może odpowiedzieć tylko główny programista. Zbadałem i znalazłem podstawowy bilet nr 17048: adresy URL dostarczane do przeglądarki powinny odnosić się do katalogu głównego . Gdzie możemy znaleźć powody wyjaśnione przez Andrew Nacina, głównego programistę. Podaje również linki do tego wątku [wp-hackers] . Na obu tych linkach znajdują się kluczowe cytaty, dlaczego WP nie używa względnych adresów URL:
Bilet podstawowy:
Wątek [wp-hackers]
I osobiście, wiele razy znalazłem motyw i wtyczki źle zakodowane, które po prostu psują się, gdy
WP_CONTENT_URL
są zdefiniowane.Nie wiedzą, że można to ustawić i zakładają, że to prawda: WP.URL / wp-content / WhatEver , a nie zawsze tak jest. I po drodze coś się zepsuje.
Wtyczka Względne adresy URL (związany w edse „s Odpowiedź ), stosuje się funkcję
wp_make_link_relative
w szereg filtrów w haku działaniatemplate_redirect
. To dość prosty kod i wydaje się fajną opcją.źródło
WP_CONTENT_URL
nie wydaje się być przeznaczone do ustawiania względnych adresów URL (nawet jeśli pozwala), wtyczka wydaje się być najlepszą opcją. Czy istnieje przypadek testowy, w którym wtyczka psuje się podczas ustawiania,WP_CONTENT_URL
ale działa dobrze podczas korzystania z wtyczki?/
a względne identyfikatory URI (do użytku wewnątrz<a>
) nigdy nie zaczynają się odhttp://
.źródło
Zgadzam się z Rupem. Myślę, że głównym powodem jest uniknięcie pomyłki na ścieżkach względnych. Myślę, że wordpress może działać od zera ze względnymi ścieżkami, ale problem może pojawić się podczas korzystania z wielu wtyczek, konfiguracji motywu itp.
Kiedyś użyłem tej wtyczki do ścieżek względnych podczas pracy na serwerach testowych:
źródło
WP_CONTENT_URL
krewnych i nie ulegnie żadnym pułapkom z własnym podejściem. Chciałabym wiedzieć, czy rzeczywiście istnieje znana pułapka związana z robieniemWP_CONTENT_URL
krewnych./wp-content/some-file.jpg
jest ścieżką bezwzględną, a nie ścieżką względną. Nie ma możliwości zamieszania. To włączenie protokołu i nazwy domeny do bezwzględnego adresu URL sprawia, że WordPress nie jest pomocny bez uzasadnienia. Aby wdrożyć witrynę WP z wersji deweloperskiej na tymczasową, muszę uruchomić skrypt znajdowania i zastępowania nazw domen w zrzucie bazy danych. Myślę, że problem polega na tym, że jest przeznaczony do edycji treści w produkcji, która działa na blogach (do czego jest przeznaczona), ale nie na wielu komercyjnych witrynach./wp-content/some-file.jpg
bycie absolulte ścieżka. W przypadku innych osób, które przeczytają Twój komentarz w przyszłości, pamiętaj, że ścieżka względna sieci to ścieżka, w której protokół i domena są wykluczone ze ścieżki. Tak więc/wp-content/some-file.jpg
iwp-content/some-file.jpg
oba są względne, przy czym wiodący/
w pierwszym przykładzie ma na celu odwołanie się do dostępnego katalogu głównego właściciela konta lub serwera.Rozwiązałem to na mojej stronie, robiąc to w functions.php
Wziąłem część jednej wtyczki, pociąłem ją na kawałki i zrobiłem to. Zastąpił WSZYSTKIE linki w mojej witrynie (menu, css, skrypty itp.) I wszystko działało.
źródło
W obszarze Ustawienia => Media dostępna jest opcja „Pełna ścieżka URL do plików”. Jeśli ustawisz to na domyślną ścieżkę katalogu multimediów „/ wp-content / uploads” zamiast pustej, wstawi ona ścieżki względne, np. „/Wp-content/uploads/2020/06/document.pdf”.
Nie jestem pewien, czy sprawia, że wszystkie linki są względne, np. Do postów, ale przynajmniej obsługuje media, o co prawdopodobnie martwi się większość ludzi.
źródło
powinien użyć get_home_url (), wtedy twoje linki są bezwzględne, ale nie ma to wpływu na zmianę adresu URL witryny
źródło
Myślę, że podczas zmiany nazw domen plik zrzutu sql, który masz, możesz zastąpić wszystkie wystąpienia starej nazwy domeny nową. Jest to jedyna dostępna opcja, ponieważ nie ma wtyczek, które pomogą Ci to zrobić.
To najszybszy sposób ...
źródło
Jest na to łatwy sposób
Zamiast
/pagename/
używaćindex.php/pagename/
lub jeśli nie używasz bezpośrednich linków, wykonaj następujące czynności:Poczta
Strona
Kategoria
Więcej informacji tutaj: http://codex.wordpress.org/Linking_Posts_Pages_and_Categories
źródło