我创建了一个块,它有一个图像字段和三个文本框:一个用于图像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 );
最合适的回答,由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 );