显示显示的媒体库项目的ID

时间:2017-10-08 作者:mmj

当我过滤媒体库以仅显示要包含在图库中的图像时(通过需要图像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]");
}

2 个回复
最合适的回答,由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查询以获取帖子的方式相同。

结束

相关推荐

在详细信息发布页面上创建后退按钮,以返回到具有相同查询字符串和页面ID的博客页面

因此,我希望在单个帖子页面上有一个后退按钮,该按钮可以动态到它知道它在查询中的位置,并将我带回正确页码、类别和搜索查询字符串上的博客页面。例如->“localhost/news blogs/page/3/?s=news&nb cat=16”如果要保留在该页面上,现在我可以执行此操作,但如果单击下一个帖子链接,则只会返回到最后一页,因为wp\\u get\\u referer()fn只保留最后一页历史记录,如果要继续单击下一个帖子链接,则需要知道如何更改页面#,因此,当我单击“后退”时,它会将我带回存