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 🙂