希望有人可以帮忙解决这个问题。我想要的是在侧边栏中显示5个附件,但只显示来自特定类别的每个帖子的1个附件,链接到帖子永久链接。
我到目前为止使用以下代码获取所有帖子的所有附件,但有些帖子有多个附件,我只想显示第一个,并将其链接到帖子的永久链接。
所以虽然限制是5个帖子,如果一个帖子有4个附件,那么目前它将从一个显示4个,而另一个共计5个,当我想要它做的只是从5个不同的每个显示1讯息。
<?php
$args = array(
'post_type' => 'attachment',
'numberposts' => 5,
'post_status' => null,
'post_parent' => null, // any parent
'category_name' => 'work',
);
$attachments = get_posts($args);
if ($attachments) {
foreach ($attachments as $post) {
setup_postdata($post);
the_title();
the_permalink();
the_attachment_link($post->ID, false);
the_excerpt();
}
}
?>
干杯。 戴夫
答案 0 :(得分:2)
为此欢呼。我还没有测试过,但我确实设法使用以下代码使其工作。无论如何我都不是一个铁杆的PHP程序员,所以我不确定哪种方法最好。我现在所知道的就是我的所作所为。
<?php query_posts('category_name=work&posts_per_page=10'); ?>
<?php while (have_posts()) : the_post(); ?>
<?php
$args = array(
'order' => 'ASC',
'post_type' => 'attachment',
'post_parent' => $post->ID,
'post_mime_type' => 'image',
'post_status' => null,
'numberposts' => 1,
);
$attachments = get_posts($args);
if ($attachments) {
foreach ($attachments as $attachment) {
//echo apply_filters('post_title', $attachment->post_title);
echo "<li><a href='";
echo the_permalink();
echo "' title='";
echo the_title();
echo "'>";
echo wp_get_attachment_image($attachment->ID, 'thumbnail', false, false);
echo "</a></li>";
}
}
?>
<?php endwhile;?>
谢谢你对它有所了解!
戴夫
答案 1 :(得分:0)
好的,我对此采取了一个措施,我真的不认为没有使用自定义查询有任何优雅的方式;
$attachment_IDs = $wpdb->get_col(
"SELECT ID FROM $wpdb->posts WHERE
post_parent > 0 AND
post_type = 'attachment'
GROUP BY post_parent
ORDER BY post_date DESC
LIMIT 5"
);
if ($attachment_IDs) {
$attachments = get_posts(array('include' => implode(',', $attachment_IDs)));
// do what you like!
}
查询获取五个最新附件,其中每个附件都有一个唯一的父级。
更新:
对不起,刚刚意识到你想按类别查询 - 在SELECT之后添加这个大的旧连接;
INNER JOIN $wpdb->term_relationships ON
($wpdb->posts.ID = $wpdb->term_relationships.object_id)
INNER JOIN $wpdb->term_taxonomy ON
($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
并将其添加到WHERE子句中;
AND $wpdb->term_taxonomy.term_id IN (YOUR_CATEGORY_ID)