Функции Wordpress: невозможно получить некоторые значения из массива

Я работаю над модификацией класса из плагина NextGen Gallery Wordpress. В конечном итоге я пытаюсь создать 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;

licensed under cc by-sa 3.0 with attribution.