Wordpress:通过 'category' 分类法获取图像
Wordpress: Getting images by 'category' taxonomy
我有以下代码,我正在尝试按类别获取图像,我有一个类别名称 "home-hero",当我将其添加到以下代码中时,它仍会显示媒体中的所有图像。
如何让它只显示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();
?>
感谢您抽空准备。
你可以这样:
<?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 );
}
}
?>
希望这对您有所帮助...
正如我在评论中所说,我有一个工作不完整的解决方案,我需要为一个项目完成。
问题是,附件没有类别,只有它们的父级有,所以不可能通过简单的查询从特定类别中获取附件
你需要在这里 运行 两个查询,第一个查询将获取给定类别的所有父 post,第二个查询将使用父 post ID从给定
的所有父 post 获取附件
在这两个查询中,您只需要获取 post 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
希望这对您的项目有所帮助
我有以下代码,我正在尝试按类别获取图像,我有一个类别名称 "home-hero",当我将其添加到以下代码中时,它仍会显示媒体中的所有图像。
如何让它只显示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();
?>
感谢您抽空准备。
你可以这样:
<?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 );
}
}
?>
希望这对您有所帮助...
正如我在评论中所说,我有一个工作不完整的解决方案,我需要为一个项目完成。
问题是,附件没有类别,只有它们的父级有,所以不可能通过简单的查询从特定类别中获取附件
你需要在这里 运行 两个查询,第一个查询将获取给定类别的所有父 post,第二个查询将使用父 post ID从给定
的所有父 post 获取附件在这两个查询中,您只需要获取 post 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
希望这对您的项目有所帮助