您的查詢是錯誤的。您正在撥打$attachment()
as和id(?!)。當您在foreach循環中執行$attachment
的print_r
時,您可以看到它們明顯是對象。因此,您需要通過參考->
See here about OOP more所需的值來獲取每個對象的ID。
$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
就是那個單一的對象。一般來說,對象是一件可以包含很多東西的東西。描述該對象的屬性,將使該對象執行某些操作的方法(對象中的函數)等。
Ours對象相對簡單。它包含諸如ID, post_author, post_name, post_type, post_title
等屬性。基本上,你需要找到關於你的文章的信息。
在我們的foreach,如前所述,你引用一個對象與$attachment
,你可以得到的價值是通過引用他們像
$attachment->ID
這是各種屬性將返回ID
的價值屬性。如果你想獲得帖子標題,你會參考
$attachment->post_title
等等。
因此,我們已將該ID分配給名爲$attachment_id
的變量。現在我們可以隨心所欲地使用它,例如wp_get_attachment_image_src()
等各種wordpress功能。
你需要知道你會得到什麼了查詢,並在循環中,所以它總是好主意,當你開發的東西,到print_r()
你會得到什麼。
另外,請記住,foreach
將循環通過帖子一個接一個。因此,即使您的print_r($attachment)
返回了一堆帖子,也只是意味着它多次(在您的案例中是6次,因爲您的查詢只返回6個帖子)並將其打印出來。它會全部粘在一起,所以你會想:但是等等,這個foreach會返回大量的東西。如何獲得唯一的東西? 但只記得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 –