‹‹ 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!