我有以下代码,我试图按类别获取图像,我有一个类别名称“home-hero”,当我将它添加到下面的代码中时,它仍然显示媒体中的所有图像。
我怎样才能让它只显示家庭英雄下的所有图像?
<?php
function get_images_from_media_library() {
$args = array(
'taxonomy' => 'home-hero',
'post_type' => 'attachment',
'post_mime_type' =>'image',
'post_status' => 'inherit',
'order' => 'DESC'
);
$query_images = new WP_Query( $args );
return $query_images;
}
function display_images_from_media_library() {
$imgs = get_images_from_media_library();
$html = '<div id="media-gallery">';
global $post;
if ($imgs->have_posts()) {
while($imgs->have_posts()) {
$imgs->the_post();
$html .= '<img src="' . $post->guid . '" alt="" />';
$html .= get_the_date('F j, Y');
}
}
$html .= '</div>';
return $html;
}
echo display_images_from_media_library();
?>
感谢您抽出宝贵时间做好准备。
答案 0 :(得分:1)
正如我所说,我有一个工作不完整的解决方案,我需要完成一个项目。
问题是,附件没有类别,只有他们的父母有,所以用简单的查询来获取特定类别的附件是不可能的
您需要在此处运行两个查询,第一个查询将获取给定类别中的所有父帖子,第二个查询将使用父帖子ID来获取来自所有父帖子的附件< / p>
在这两个查询中,您只需要获取帖子ID字段,这将大大加快您的查询速度,并且您将使用返回的附件ID($attachments->posts
)和wp_get_attachment_image()
此代码旨在进入函数,$post_type
,$taxonomy
和$term
应该动态检索。您可以将值硬编码为这三个变量,也可以在函数中使其动态化
您不需要使用tax_query
,如果您使用内置分类category
,则只需使用类别参数即可。我刚刚使用了tax_query
,因此可以将函数用于任何分类。如果您将tax_query
保留为内置类别,请记住,分类标准为category
,术语将为类别ID(我将字段设置为term_id
)
此代码至少需要PHP 5.4。如果您的版本低于5.4,只需将数组包装器[]
更改为array()
以下是代码:
$args1 = [
'posts_per_page' => -1,
'fields' => 'ids',
'post_type' => $post_type,
'tax_query' => [
[
'taxonomy' => $taxonomy,
'field' => 'term_id',
'terms' => $term,
'include_children' => false
],
],
];
$post_parents = new WP_Query($args1);
if( $post_parents->posts ) {
$args = [
'post_type' => 'attachment',
'post_mime_type' => 'image',
'post_status' => 'inherit',
'fields' => 'ids',
'posts__in' => $post_parents->posts,
];
$attachments = new WP_Query($args);
}
?><pre><?php var_dump($attachments->posts); ?></pre><?php
希望这可以帮助您完成项目
答案 1 :(得分:0)
你可以这样:
<?php
$images = get_posts( array('post_type' => 'attachment', 'category__in' => array(cat_ids)) );
if ( !empty($images) ) {
foreach ( $images as $image ) {
echo wp_get_attachment_image($image->ID).'<br />';
echo $image->post_title .'<br />';
the_attachment_link( $image->ID, true );
}
}
?>
希望这会有所帮助......