Podczas instalacji wp_editora po stronie użytkownika okazało się, że dwie grafiki są źle podlinkowane. O ile sam edytor działa bez zarzutu, to problem pojawił się przy użyciu przeglądarki mediów. Tzw "spinner" i "uploader-icons" wywoływane są najwyraźniej po relatywnej ścieżce i po instalacji skryptu poza katalogiem wp-admin następuje próba odwołania się do nieistniejącego folderu 'wp-admin/wp-includes/images/'.
Podmiana błędnej ścieżki
Szukałem w kodzie czy można to gdzieś zmienić, ale w przypadku aktualizacji zmiany przepadną. Najlepiej zastosować mod_rewrite i plik .htaccess WordPress'a. Błąd dotyczy plików graficznych, więc akcję można zawęzić i wykonać tylko dla nich. Gdy warunek zostanie spełniony nastąpi podmiana ścieżki dostępu na prawidłową.
#Wersja PHP zmieniona: 2020-03-15 03:38:51 AddHandler php7.3-fastcgi php ## Fix Bad Image Requests RewriteCond %{REQUEST_FILENAME} !-f ## Add image file types to check against here RewriteCond %{REQUEST_URI} .(gif|jpe?g|png|bmp|tiff|xcf|psd|ico|svg)$ [NC] ## Specify the file to serve instead RewriteRule wp-admin/wp-includes/images/(.*) wp-includes/images/$1 [L] # BEGIN WordPress # Dyrektywy zawarte między `BEGIN WordPress` oraz `END WordPress` # są generowane dynamicznie i powinny być modyfikowane tylko za pomocą # filtrów WordPressa. Zmiany dokonane bezpośrednio tutaj będą nadpisywane. <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] #http://nowy.polskirock.eu/wp-admin/wp-includes/images/uploader-icons.png </IfModule> # END WordPress
Plik .htaccess systemu WordPress
Wg tego co napisano w liniach 11 – 15, wszystko między BEGIN WordPress i END WordPress zostanie nadpisane przy aktualizacji. Wstawienie czegokolwiek po END nie zadziała dzięki instrukcji z linii 22. Należy się zatem rozgościć na początku. W linii 5 sprawdzamy czy odwołanie nie jest do pliku, a w linii 7 czy plik jest z rodziny graficznych. Logicznie sprzeczne? Nie. Szukamy odwołania które wywołuje błąd 404 – brak pliku. Połączenie tych dwóch warunków daje nam informację, czy mamy do czynienia brakiem pliku graficznego.
Omówienie warunków wykonania mod_rewrite
Linia 9 to wykonanie przepisania. W naszym przypadku mocno sprecyzowany. Chodzi o konkretny błędny katalog i dobrą ścieżkę przekierowania. RewriteRule wp-admin/wp-includes/images/(.*) wp-includes/images/$1 [L]
Wszystko co po 'images/' jest zapisane do zmiennej (.*) => $1. Podajemy dobrą ścieżkę i przypisujemy $1. Po 'images/' nie musi być od razu nazwa pliku, a kolejny podkatalog i następny… Całość zostanie przepisana w całości. Tyle. Sprawdziłem i działa, a to najważniejsze 🙂