我想从当前帖子的附件中随机抽取四幅图片,显示为“特色图片”。因此,我使用以下功能:
function fs_gallery_featured_thumbs( $post_id ) {
// DEBUG: validate parent post ID
echo $post_id;
// Query to get images for this post
$query = array(
\'post_parent\' => $post_id,
\'post_type\' => \'attachment\',
\'post_mime_type\' => \'image\',
\'order\' => \'RAND\',
\'exclude\' => get_post_thumbnail_id( $post_id ) );
$images = array_rand( get_children( $query ), 4);
// If images exist for this page
if ( $images ) {
echo \'<div class="featured-thumbs">\';
$i = 1;
foreach ( $images as $image ) {
$imageAttributes = wp_get_attachment_image_src( $image, \'gallery-thumbnail-1x1\' );
echo \'<a href="\'.get_permalink().\'" class="featured-thumb-link featured-thumb-link-\'.$i.\'"><img src="\'.$imageAttributes[0].\'" alt="\'.the_title_attribute(array(\'echo\'=>0)).\'" class="featured-thumb featured-thumb-\'.$i++.\'" width="152px" height="152px" /></a>\';
}
echo \'</div>\';
}
}
唯一的参数是从循环内部通过
the_ID()
并且实际上返回了正确的父帖子ID(我使用
echo $post_id;
上述功能内部。
但是,由于某种原因images
包含媒体库中所有图像的四个随机项,而不仅仅是附加到当前帖子的图像。
我怎样才能真正只获得贴在帖子上的图片?当我使用[gallery]
在这篇文章中,显示了正确的图像。我想要的只是那个画廊里的四张随机图片。
有什么想法吗?
不确定这是否与此有关:所有其他(错误)图片所附的帖子在某个时候被删除了。这些图片仍然在媒体库中徘徊,但是它们“使用”的帖子的帖子ID(这里不确定正确的英语术语,我的WP是德语)与我的不同post_parent
.
Thx。
最合适的回答,由SO网友:Chip Bennett 整理而成
我所做的:在我用来在标准循环中显示帖子的模板中,我调用了上述函数:fs_gallery_featured_thumbs( $post->ID )
(最初我使用the_ID()
而不是$post->ID
这给我带来了麻烦。我想是因为the_ID()
实际上与身份相符,rihgt?)。
确切地问题不在于函数本身,而在于传递给它的参数。因为the_ID
回显而不是返回其值,实际函数被传递NULL
, 导致查询所有帖子的附件。
解决方案:
通过$post->ID
(在以下情况下$post
全球化)通过get_the_ID()
(在回路内部)