‹‹ Vissza a bejegyzés listához
Webprogramozás - Wordpress, Multisite és a nem megjelenő képek
2012. október 3. 21:52:22
Címkék: wordpress multisite kép probléma php
Egy kis wordpress hack, ha már a multisite hibásan jelenítette meg a képeket.
Történt a minap, azaz ma, hogy az egyik már létező egyszerű oldalból egy multisite-ot kellett létrehozni. Azzal még semmi komolyabb probléma nem volt. Szépen be lett állítva minden, menük, kategóriák, aztán jött a képfeltöltés. Felküldtem 150 képet, majd döbbenten tapasztaltam, hogy egyik sem jelenik meg... mi a fene?
A gond ott volt, hogy a link maga rossz volt, amit a wordpress összerakott.
Például http://en.valami.hu/files/2012/10/kep.jpg.
Ez majdnem jó, csak hogy az url helyesen így nézne ki:
http://en.valami.hu/wp-content/blogs.dir/2/files/2012/10/kep.jpg
Mivel ezt csak úgy egyszerűen nem lehet meghackelni, kénytelen voltam mélyebben a kódba süllyedni és felderíteni a terepet.
Némi keresgélés után meg is lett a ludas a /wp-includes/media.php fileban. Amikor lekérjük a képet, valami miatt rossz volt az összeállított url. Pedig beállítottam mindenféle upload_url és egyéb opciót, ám ezek nem vezettek eredményre. Így hát a következő kód lett összeállítva:
function thumbnail_handler($image_attrs) { $escaped_url = str_replace("/", "\/", get_bloginfo('url')); $upload_path = get_option("upload_path", ""); $image_attrs["src"] = preg_replace("/(".$escaped_url.")\/files/", "$1/$upload_path",$image_attrs["src"]); return($image_attrs); } add_filter("wp_get_attachment_image_attributes", "thumbnail_handler");
Mint látszik ez csupán annyit csinál, hogy előkészíti a blog url-jét a reguláris kifejezéshez, valamint lekéri az upload_path beállítást, végül kicseréli a kérdéses hibás részt. És voálá, jó is lett minden. Persze azért egy órába beletelt, mire megleltem a gondját. Apropó, egyes pluginokban előfordulhatnak hibák, mint például a Contact Form 7 Captcha-ja sem jelent meg helyesen, ezt szintén egyszerűen lehetett orvosolni:
define("WPCF7_CAPTCHA_TMP_URL", get_bloginfo('url').'/'.get_option("upload_path").'/wpcf7_captcha');
No, talán valakinek segített ez a kis apróság és gyorsabban halad ezáltal. További szép napot, estét!