如何在保存帖子时从自定义域更新图像附件的Alt文本?

时间:2020-10-12 作者:Gregory Schultz

我创建了一个块,它有一个图像字段和三个文本框:一个用于图像alt的文本字段,一个用于描述的文本区域,以及另一个在ACF中创建的文本字段,以允许附加图像的照片信用。文本框主要用于用户输入图像的元数据,我正在寻找一种在保存帖子时更新这些元数据的方法。

例如:我有一个名为photo_alt_text 用于更新Alternative text 对于附加的图像。因此,当用户保存帖子时photo_alt_text 保存到Alternative text.

这是我目前掌握的代码:

function post_extra_save( $post_id, $post){
if ( has_blocks( $post->post_content ) ) {
    $blocks = parse_blocks( $post->post_content );
    foreach ( $blocks as $block ) {
        if ( $block[\'blockName\'] === \'acf/opby-cover-image\' ) { // name of block
            $cover_img_photo_alt = $block[\'attrs\'][\'data\'][\'photo_alt_text\']; // text field for `photo_alt_text`
            update_post_meta($post->id, \'_wp_attachment_image_alt\', $cover_img_photo_alt); // attempting to update the image attachment image alt text
        }
    }
};
}
add_action( \'save_post\', \'post_extra_save\', 10, 2 );

1 个回复
最合适的回答,由SO网友:Gregory Schultz 整理而成

我发现了问题。它正在更新帖子,而不是附件。因此$post->ID, 我创建了另一个存储图像ID的字符串,并将其替换为post->ID 这是可行的。

function post_extra_save( $post_id, $post){
if ( has_blocks( $post->post_content ) ) {
$blocks = parse_blocks( $post->post_content );
foreach ( $blocks as $block ) {
    if ( $block[\'blockName\'] === \'acf/opby-cover-image\' ) { // name of block
        $media_url_thumb = $block[\'attrs\'][\'data\'][\'image_post\']; // Image ID from the block 
        $cover_img_photo_alt = $block[\'attrs\'][\'data\'][\'photo_alt_text\']; // text field for `photo_alt_text`

        update_post_meta($media_url_thumb, \'_wp_attachment_image_alt\', $cover_img_photo_alt);
    }
}
};
}
add_action( \'save_post\', \'post_extra_save\', 10, 2 );

相关推荐

Broken images on iphone

我在iPhone上破坏了图像,这只发生在我大约一周前添加新图像的主页上(新图像的格式和大小与旧图像完全相同)这是网站:CartonMaster。伊利诺伊州公司提前感谢,