Ваш запрос неверен. Вы вызываете $attachment()
как и id (?!). Когда вы делаете print_r
из $attachment
в цикле foreach, вы можете видеть, что они явно являются объектами. Поэтому вам нужно получить идентификатор от каждого объекта, указав необходимое значение с помощью ->
See here about OOP more.
$args = array(
'post_id' => '7',
'post_type' => 'attachment',
'numberposts' => 6,
'orderby' => 'rand'
);
$attachments = get_posts($args);
if ($attachments) {
foreach ($attachments as $attachment) {
$attachment_id = $attachment->ID;
$image = wp_get_attachment_image_src($attachment_id);
if (!empty($image)) {
$image_url = $image[0];
}
echo '<a href="' . wp_get_attachment_url($attachment_id) . '"><img src="' . $image_url . '" /></a>';
}
}
wp_reset_postdata();
Также wp_get_attachment_image_src() возвращает массив, содержащий
[0] => url
[1] => width
[2] => height
[3] => boolean: true if $url is a resized image, false if it is the original or if no image is available.
Так что это массив, я всегда проверяю, если он не пустой (на всякий случай).
После запроса всегда делайте wp_reset_postdata();
.
Все.
Объяснение в немного более подробно
Так что вы здесь делаете простой запрос. Вы хотите получить сообщения, которые соответствуют некоторым параметрам, установленным в вашем массиве $args
. Вы можете много сделать с этим. Clicky here.
Что делает этот запрос, он возвращает сообщения, соответствующие вашим параметрам запроса. И то, что он возвращает, - это array of objects. Поэтому, если вы хотите получить доступ к каждому из них, вам нужно пройти через loop. И для этого существует цикл foreach
.
Foreach будет проходить через каждый элемент вашего массива, и вы сможете получить к нему доступ как $attachment
(в вашем случае). Вы можете закодировать любой массив. Простой массив, многомерный массив, массив, содержащий объекты и т. Д.
Итак, мы сказали, что ваш запрос вернет список из objects (массив). Внутри вашей петли foreach $attachment
этот единственный объект. В общем, объект - это вещь, которая может содержать много вещей. Свойства, описывающие этот объект, методы (функции в объекте), которые сделают этот объект чем-то, если вы хотите, и т. Д.
Наш объект относительно прост. Он содержит такие свойства, как ID, post_author, post_name, post_type, post_title
и другие. В принципе, все, что вам нужно, чтобы найти информацию о вашем посту.
В нашем Еогеасп, как упоминалось выше, вы ссылаетесь один объект с $attachment
, и вы можете получить значение из его различных свойств путем ссылки на них, как
$attachment->ID
это вернет значение ID
имущество. Если вы хотите получить сообщение, вы будете ссылаться на
$attachment->post_title
И так далее.
Таким образом, мы присвоили этому идентификатору переменную $attachment_id
. Теперь мы можем свободно использовать его, как мы желаем, с различными выполняемыми Wordpress функциями, например, wp_get_attachment_image_src()
.
Вам нужно знать, что вы получаете из запросов и в цикле, поэтому всегда хорошо, когда вы разрабатываете материал, до print_r()
, что вы выходите.
Кроме того, имейте в виду, что foreach
будет проходить через сообщения по одному. Поэтому, даже если ваш print_r($attachment)
возвращает кучу сообщений, это означает, что он сделал это несколько раз (ну в вашем случае 6 раз, так как ваш запрос возвращает только 6 сообщений) и просто распечатал его. Все это будет «склеено», чтобы вы подумали: «Но подождите, этот foreach возвращает массу вещей. Как получить только один материал? Но только помните, что код внутри цикла foreach
относится к одному экземпляру вашего массива, и что Еогеасп будет идти, как:
item 1
|
v
do stuff with it...
|
v
done (output or whatever you are doing in foreach)
|
v
more items?
|
v
YES!
|
v
move to item 2
|
v
do same stuff with it
|
v
done
|
v
more items?
|
v
YES!
|
v
move to item 3
.
.
.
|
v
more items?
|
v
NO :(
|
v
exit loop
И вот как Foreach работает, так что не бойтесь его: D
Я пошел немного из колеи, но я надеюсь, что это помогает кто-то в будущем, а также :)
http://php.net/manual/en/function.error-reporting.php и вид ваш источник HTML. –
Вы пытаетесь использовать переменную, переданную как исполняемую функцию. http://php.net/manual/en/functions.variable-functions.php –