Get all post embedded images

时间:2021-03-11 作者:modex98

我想得到一张嵌入后的图片,但我在互联网上看到的唯一方法是

        $attachments = get_posts(array(
            \'post_parent\'       => get_the_ID(),
            \'post_type\'         => \'attachment\',
            \'posts_per_page\'    => $n,
            \'post_mime_type\' => \'image\'
        ));


        $attachments = get_children(array(
            \'post_parent\'       => get_the_ID(),
            \'post_type\'         => \'attachment\',
            \'posts_per_page\'    => $n,
            \'post_mime_type\' => \'image\'
        ));

        $attachments = get_attached_media(\'image\', get_the_ID());
但这只提供附加的图像我希望所有图像都在一篇文章中,即使它们没有附加到该文章中\'post_parent\' => get_the_ID()

我认为这是wordpress附加图像的方式,听起来像是一对多的关系一个图像只能附加到一个帖子上

有什么想法吗?提前感谢

2 个回复
SO网友:Álvaro García

您可以使用DOMDocument从任何页面获取每个图像:

function testingdom(){

    $dom = new DOMDocument();
    libxml_use_internal_errors(true);
    
    $dom->loadHTMLFile(\'https://the_post_url.com/anyone\');
    $data = $dom->getElementsByTagName("img");
    
    $srcs = array();
    foreach($data as $key => $dat){
        $srcs[] =  $data->item($key)->getAttribute("src");
    }
    
    $dom = null;

}
add_action("wp_head", "testingdom");
这样,您应该让数组中的每个src都调用srcs

SO网友:modex98

我认为如果WordPress不提供这样的功能,那么这是最短的方法

function my_get_embeded_media() {
    $content = apply_filters(\'the_content\', get_the_content());

    $arr = preg_match_all("/<img[^>]* src=\\"([^\\"]*)\\"[^>]*>/", $content, $matches);

    return $arr ? $matches[1] : array();
}

但我们仍然无法控制图像的大小!

相关推荐

delete post also attachments

我正在尝试删除包含所有附件的帖子。这就是我现在想到的函数;function remove_post(){ if(isset($_POST[\'post_id\']) && is_numeric($_POST[\'post_id\'])){ $post = get_post($_POST[\'post_id\']); if(get_current_user_id() == $pos