当我过滤媒体库以仅显示要包含在图库中的图像时(通过需要图像id的快捷码),如果Wordpress在某处显示所显示图像的id列表,这将非常有用。目前我一个接一个地打开图像来检索它们的id,我觉得这不应该是正确的方式。
由于我是Wordpress的新手,可能存在一种不同的方法来实现相同的结果,这样的插件我无法找到,但无论如何,我上面描述的功能(我不知道如何实现)将解决这个问题,我认为它对许多人都非常有用。
提前谢谢。
Follow up
在Sunil Dora answer的基础上,我编写了这个代码段,它允许按一个或多个(按和运算符)类别术语选择图像,并使用现有的短代码创建库(在下面的示例中,创建并执行了一个短代码Ultimate插件短代码,但您可以定制代码段来构建任何类型的短代码)。我相信这个功能非常强大,因为你不必修改你的短代码来更新你的库,但你只需要为附件分配正确的类别术语。例如,如果要将图像添加到库中,则不必编辑快捷码,只需上载新图像并为其指定正确的类别术语即可。这是片段,我在
funtions.php
, 我希望有人能够用它构建一个简单的插件,并在这里通知。
// usage: [mmj-taximids categoryname=\'media_category\' categoryterms=\'term1,term2,term3\']
// usage: [mmj-taximids size=120 categoryname=\'media_category\' categoryterms=\'term1,term2,term3\']
add_shortcode(\'mmj-taximids\', \'mmj_taxonomy_image_ids\');
function mmj_taxonomy_image_ids($atts)
{
// Attributes
$a = shortcode_atts(array(
\'categoryname\' => \'not_provided\',
\'categoryterms\' => \'not_provided\',
\'limit\' => -1,
\'size\' => 180
), $atts);
// Output Code
$tax_query_array = array();
foreach (explode(\',\', $a[\'categoryterms\']) as $value) {
array_push($tax_query_array,array(
\'taxonomy\' => $a[\'categoryname\'],
\'field\' => \'slug\',
\'terms\' => array($value)
));
}
if (count($a)>1) {$tax_query_array["relation"]="AND";}
//print_r($tax_query_array);
$args = array(
\'post_type\' => \'attachment\',
\'post_status\' => \'any\',
\'post_mime_type\' => array( \'image/jpeg\',\'image/gif\',\'image/png\',\'image/bmp\',\'image/tiff\',\'image/x-icon\' ),
\'posts_per_page\' => -1,
\'tax_query\' => $tax_query_array
);
$query_images = new WP_Query($args);
$id_list = "";
foreach ($query_images->posts as $image) {
$id_list .= (($image->ID) . ",");
}
return do_shortcode("[su_custom_gallery source=\\"media: ".$id_list."\\" limit=".$a[\'limit\']." link=\\"lightbox\\" width=\\"".$a[\'size\']."\\" height=\\"".$a[\'size\']."\\"][/su_custom_gallery]");
}
最合适的回答,由SO网友:Sunil Dora 整理而成
实际上,wordpress也以post格式存储媒体库文件。
因此,您可以按照这种方式获取附件媒体文件及其id。
希望这对你有帮助。
function get_images_from_media_library() {
$args = array(
\'post_type\' => \'attachment\',
\'post_mime_type\' =>\'image\',
\'post_status\' => \'inherit\',
\'posts_per_page\' => 5,
\'orderby\' => \'rand\'
);
$query_images = new WP_Query( $args );
$images = array();
foreach ( $query_images->posts as $image) {
$images[\'id\']= $image->ID;
$images[\'src\']= $image->guid;
}
return $images;
}
下一步是创建HTML库或短代码:
function display_images_from_media_library() {
$imgs = get_images_from_media_library();
$html = \'<div id="media-gallery">\';
foreach($imgs as $img) {
$html .= \'<img src="\' . $img[\'src\'] . \'" alt="\' . $img[\'id\'] . \'" />\';
}
$html .= \'</div>\';
return $html;
}
您可以将此代码用于gallery短代码。
SO网友:Sunil Dora
你可以像其他类型的帖子一样获取附件。
因此,您可以这样编写WP\\U查询,以应用类别过滤器来获取媒体库图像。就这样,
$query_images_args = array(
\'post_type\' => \'attachment\',
\'post_mime_type\' =>\'image\',
\'post_status\' => \'inherit\',
\'posts_per_page\' => -1,
\'tax_query\' => array(
array(
\'taxonomy\' => \'attachment_category\',
\'field\' => \'slug\',
\'terms\' => \'SLUG OF YOUR TERM\',
),
),
);
$query_images = new WP_Query( $query_images_args );
或
你也可以这样试试,
$args = array(
\'category\' => $cat_ID or
\'category_name\' => $cat_name,
\'post_type\' => \'attachment\'
);
$attachments = get_posts($args);
此查询与编写WP\\U查询以获取帖子的方式相同。