替换前端的特色图片

时间:2019-10-30 作者:bpy

我正在使用此代码将alt文本添加到我上传的特色图像中。

$image_title = get_post( $post->ID )->post_title;
// Sanitize the title:  remove hyphens, underscores & extra spaces:
$image_title = preg_replace( \'%\\s*[-_\\s]+\\s*%\', \' \',  $image_title );
// Sanitize the title:  capitalize first letter of every word (other letters lower case):
$image_title = ucwords( strtolower( $image_title ) );
// Set the image Alt-Text
add_post_meta( $post->ID, \'_wp_attachment_image_alt\', $image_title );
它正在工作,我可以在它的数据库表上看到它wp_postmeta 在它的post ID下。

虽然已在数据库中正确注册,但特征图像没有Alt文本(请参见下面的图像)

missing Alt Text

有什么问题吗?

2 个回复
SO网友:mistertaylor

我相信你需要使用set_post_thumbnail 要实际设置特色图像:

set_post_thumbnail($_POST[\'post_id\'], $attachment_id);

SO网友:bpy

需要从media_handle_upload 像这样:

First we get the new image ID

$attach_id = media_handle_upload( $file_handler, $_POST[\'post_id\'] );

Than we prepare the content of that alt="text":

// Prepare the alt="title"
$image_title = get_post( $post->ID )->post_title;
// Sanitize the title:  remove hyphens, underscores & extra spaces:
$image_title = preg_replace( \'%\\s*[-_\\s]+\\s*%\', \' \',  $image_title );
// Sanitize the title:  capitalize first letter of every word (other letters lower case):
$image_title = ucwords( strtolower( $image_title ) );

And finaly we set the new image alt="text":

add_post_meta( $attach_id, \'_wp_attachment_image_alt\', $image_title );
上述代码失败的原因是$post->IDID 而不是attachment ID (这是我们需要的)。