如何从 Wordpress Media 获取图像标题和描述

How to get image title and description from Wordpress Media

我有一个产品页面,您可以在其中创建自己的产品,随着您做出的每个选择,显示的图像都会发生变化

一旦用户点击按钮,我想使用短代码从 Wordpress 的媒体部分获取当前显示图像的标题和描述。

现在我发现很多 post 都带有此代码(您必须在 functions.php 中插入)

function wp_get_attachment( $attachment_id ) {

    $attachment = get_post( $attachment_id );
    return array(
        'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
        'caption' => $attachment->post_excerpt,
        'description' => $attachment->post_content,
        'href' => get_permalink( $attachment->ID ),
        'src' => $attachment->guid,
        'title' => $attachment->post_title
    );
}

然后用这段代码调用函数

$attachment_meta = wp_get_attachment($attachment_id);

编辑:我在 post here

上找到了代码

但是由此收集的数据仅与产品页面有关(因此页面的标题和描述),这不是我要找的。

另外,我发现获取页面上图像 attachment_id 的唯一方法是使用这篇文章 here 但它是手动完成的,我需要在短代码中完成它...

这是完整的代码

add_shortcode( 'afficher_produits_devis2', function(){
    $attachment_meta = wp_get_attachment($attachment_id);
    echo $attachment_meta['caption'];
} );

function wp_get_attachment( $attachment_id ) {

    $attachment = get_post( $attachment_id );
    return array(
        'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
        'caption' => $attachment->post_excerpt,
        'description' => $attachment->post_content,
        'href' => get_permalink( $attachment->ID ),
        'src' => $attachment->guid,
        'title' => $attachment->post_title
    );
}

编辑 2

我可能已经找到了来自@Ruvee 的 post 的解决方案,但现在我必须找到一种方法来解析页面的 html 并获取URL 的图像。

编辑 3

我发现了为什么我只能获取缩略图数据,结果是当我加载产品页面时直接激活简码,而不是当我点击按钮时。所以它只激活一次并且总是让第一张图片出现(缩略图)。

我更正了错误,现在可以正常使用了 谢谢@Ruvee

"I have to find a way to parse the html of the page and get the URL of the image."

不,没必要!正如我在 中所说,在没有实际图像 url 的情况下获取元数据的第二种方法是使用 id of the image。您可以使用 get_post_thumbnail_id 函数获得 id of the image

所以你的简码应该是这样的:

add_shortcode( 'afficher_produits_devis2', function(){
    global $post;
    $image_id = get_post_thumbnail_id($post->ID);
    $image_caption = get_post_field('post_excerpt', $image_id);
    echo $image_caption;
} );