Функции Wordpress: Не удается получить некоторые значения из массива
Я работаю над модификацией класса из плагина Wordpress галереи NextGen. В конечном итоге я пытаюсь создать URL-адрес изображения, собрав необходимые биты, которые NGG хранит в базе данных.
Я дошел до того, что исходный код выполняет SQL-запрос и дает массив, а затем извлекает определенные значения из этого массива. Массив содержит все значения, которые мне нужны, но я могу только получить некоторые значения, и я не могу понять, почему.
Вот мой модифицированный код в его нынешнем виде:
// Class copied from ngg plugin, change class name from 'nggWidget' to 'nggHeaderBG'
class nggHeaderBG extends WP_Widget {
function widget( $args, $instance ) {
global $wpdb;
$items = $instance['items'];
$exclude = $instance['exclude'];
$list = $instance['list'];
$exclude_list = "AND t.gid IN ($list)";
$imageList = $wpdb->get_results("SELECT t.*, tt.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE tt.exclude != 1 $exclude_list ORDER by rand() limit {$items}");
foreach($imageList as $image) {
// get the URL constructor
$theimage = new nggImage($image);
// Just create the image URL
$out .= ''.home_url().'/'.$theimage->path.'/'.$theimage->filename;
echo $out;
}
}
В приведенном выше коде $theimage->filename
работает, но $theimage->path
не. var_dump($theimage)
создает следующий массив (он длинный, поэтому я сохраню его во фрагменте кода):
object(nggImage)#3716 (2) {
["_ngiw"]=>
object(C_Image_Wrapper)#3717 (8) {
["_cache"]=>
array(34) {
["alttext"]=>
string(9) "homepage3"
["author"]=>
string(2) "10"
["description"]=>
string(1) " "
["errmsg"]=>
string(0) ""
["error"]=>
bool(false)
["exclude"]=>
string(1) "0"
["filename"]=>
string(13) "homepage3.gif"
["galdesc"]=>
string(72) "For Home Landing Page Only.
Must be 880 pixels wide by 350 pixels high."
["galleryid"]=>
string(1) "2"
["gid"]=>
string(1) "2"
["hidden"]=>
bool(false)
["href"]=>
string(0) ""
["imagePath"]=>
string(0) ""
["imageURL"]=>
string(0) ""
["image_slug"]=>
string(9) "homepage3"
["imagedate"]=>
string(19) "2014-10-01 16:03:54"
["meta_data"]=>
array(17) {
["width"]=>
int(880)
["height"]=>
int(350)
["full"]=>
array(2) {
["width"]=>
int(880)
["height"]=>
int(350)
}
["thumbnail"]=>
array(4) {
["width"]=>
int(350)
["height"]=>
int(139)
["filename"]=>
string(20) "thumbs_homepage3.gif"
["generated"]=>
string(21) "0.25234600 1412179434"
}
["aperture"]=>
bool(false)
["credit"]=>
bool(false)
["camera"]=>
bool(false)
["caption"]=>
bool(false)
["created_timestamp"]=>
bool(false)
["copyright"]=>
bool(false)
["focal_length"]=>
bool(false)
["iso"]=>
bool(false)
["shutter_speed"]=>
bool(false)
["flash"]=>
bool(false)
["title"]=>
bool(false)
["keywords"]=>
bool(false)
["saved"]=>
bool(true)
}
["name"]=>
string(14) "second_gallery"
["pageid"]=>
string(1) "0"
["path"]=>
string(31) "wp-content/gallery/home_headers"
["permalink"]=>
string(0) ""
["pid"]=>
string(3) "411"
["post_id"]=>
string(1) "0"
["previewpic"]=>
string(3) "403"
["slug"]=>
string(12) "home_headers"
["sortorder"]=>
string(1) "0"
["style"]=>
string(0) ""
["tags"]=>
string(0) ""
["thumbFolder"]=>
string(8) "/thumbs/"
["thumbPath"]=>
string(0) ""
["thumbPrefix"]=>
string(7) "thumbs_"
["thumbURL"]=>
string(0) ""
["thumbcode"]=>
string(0) ""
["title"]=>
string(12) "Home_Headers"
}
["_settings"]=>
NULL
["_storage"]=>
NULL
["_galleries"]=>
NULL
["_orig_image"]=>
object(stdClass)#3715 (20) {
["gid"]=>
string(1) "2"
["name"]=>
string(14) "second_gallery"
["slug"]=>
string(12) "home_headers"
["path"]=>
string(31) "wp-content/gallery/home_headers"
["title"]=>
string(12) "Home_Headers"
["galdesc"]=>
string(72) "For Home Landing Page Only.
Must be 880 pixels wide by 350 pixels high."
["pageid"]=>
string(1) "0"
["previewpic"]=>
string(3) "403"
["author"]=>
string(2) "10"
["pid"]=>
string(3) "411"
["image_slug"]=>
string(9) "homepage3"
["post_id"]=>
string(1) "0"
["galleryid"]=>
string(1) "2"
["filename"]=>
string(13) "homepage3.gif"
["description"]=>
string(1) " "
["alttext"]=>
string(9) "homepage3"
["imagedate"]=>
string(19) "2014-10-01 16:03:54"
["exclude"]=>
string(1) "0"
["sortorder"]=>
string(1) "0"
["meta_data"]=>
array(17) {
["width"]=>
int(880)
["height"]=>
int(350)
["full"]=>
array(2) {
["width"]=>
int(880)
["height"]=>
int(350)
}
["thumbnail"]=>
array(4) {
["width"]=>
int(350)
["height"]=>
int(139)
["filename"]=>
string(20) "thumbs_homepage3.gif"
["generated"]=>
string(21) "0.25234600 1412179434"
}
["aperture"]=>
bool(false)
["credit"]=>
bool(false)
["camera"]=>
bool(false)
["caption"]=>
bool(false)
["created_timestamp"]=>
bool(false)
["copyright"]=>
bool(false)
["focal_length"]=>
bool(false)
["iso"]=>
bool(false)
["shutter_speed"]=>
bool(false)
["flash"]=>
bool(false)
["title"]=>
bool(false)
["keywords"]=>
bool(false)
["saved"]=>
bool(true)
}
}
["_orig_image_id"]=>
string(3) "411"
["_cache_overrides"]=>
NULL
["_legacy"]=>
bool(true)
}
["_propogate"]=>
bool(true)
}
Я могу получить некоторые переменные, но не другие. В дополнение к имени файла, например, я могу получить, например, "alttext", "pid", "imagedate", "image_slug", "thumbFolder", "thumbPrefix". Те все работают. Другие, такие как 'path' и 'slug', которые я мог бы использовать для создания своего URL, всегда возвращаются со значением 'second_gallery', которое является значением 'name'. Похоже, что это запасной вариант по умолчанию для любого значения, которое не удается извлечь. Я даже пытался $theimage->_orig_image->path
, но это ничего не дает. Используя подход квадратной скобки, т.е. $theimage['path']
просто вызывает весь сайт испортить. Может кто-нибудь объяснить, почему некоторые значения могут быть получены, а другие нет? И, что более важно, как я могу получить значения, которые я хочу (в основном, "путь") из этого конкретного массива? Благодарю.
1 ответ
Это смесь массивов и объектов, но, игнорируя массив кеша, это, вероятно, то, что вы ищете:
$path= $theimage->_ngiw->_orig_image->path;