不幸地wp_handle_upload_prefilter
挂钩尚未识别附件ID。太早了,运行预清理的文件名(在移动附件并将其存储为帖子之前)
逻辑上,你能做的就是使用这个钩子wp_handle_upload_prefilter
但是,应该存储一个包含经过预清理的文件名的寿命很短的瞬态。
添加附件后,我们可以使用add_attachment()
钩您可以使用存储的瞬时值更新附件标题、标题或任何其他元数据。
最后,您将删除瞬态。
我确实测试了这个方法,并且似乎在本地主机安装上进行了多附件和单附件上传。
好的,这就是如何使用代码来完成它。
挂接wp\\u handle\\u upload\\u prefilter并将预清理的文件名(无扩展名)存储为WordPress瞬态,使用set_transient
add_action( \'wp_handle_upload_prefilter\', \'_remember_presanitized_filename\' );
function _remember_presanitized_filename( $file ) {
$file_parts = pathinfo( $file[\'name\'] );
set_transient( \'_set_attachment_title\', $file_parts[\'filename\'], 30 );
return $file;
}
捕获瞬态选项以更新添加的附件
add_action( \'add_attachment\', \'_set_attachment_title\' );
function _set_attachment_title( $attachment_id ) {
$title = get_transient( \'_set_attachment_title\' );
if ( $title ) {
// to update attachment title and caption
wp_update_post( array( \'ID\' => $attachment_id, \'post_title\' => $title, \'post_excerpt\' => $title ) );
// to update other metadata
update_post_meta( $attachment_id, \'_wp_attachment_image_alt\', $title );
// delete the transient for this upload
delete_transient( \'_set_attachment_title\' );
}
}