我为我的订阅者创建了额外的字段,其中一个是图像字段,所以他们可以将图像上载到他们的个人资料中。
我用ACF(高级自定义字段)创建了字段。
我有一个自定义的注册表单和一个自定义的编辑表单,以及常规的WordPress字段和额外的字段。一切都很完美。。。图像字段除外。
我不担心注册表,我接受用户在注册时不会上传图像,但我需要他们在编辑信息时能够编辑/上传图像。
附言(1):图像将被用作头像,我不会使用常规的WordPress头像
附言(2):我不会使用acf\\U表单(),因为我需要对表单的工作方式进行太多的编辑
Here is part of the code:
<label for="avatar_user"></label>
<input class="text-input" name="avatar_user" type="file" id="avatar_user" value="<?php the_author_meta( \'avatar_user\', $current_user->ID ); ?>" />
if ( !empty( $_POST[\'avatar_user\'] ) ) :
update_user_meta( $current_user->ID, \'avatar_user\', esc_attr( $_POST[\'avatar_user\'] ) );
SO网友:Randomer11
也许这样做会有所帮助:
// Deal with images uploaded from the front-end while allowing ACF to do it\'s thing
function my_acf_pre_save_post($post_id) {
if ( !function_exists(\'wp_handle_upload\') ) {
require_once(ABSPATH . \'wp-admin/includes/file.php\');
}
// Move file to media library
$movefile = wp_handle_upload( $_FILES[\'my_image_upload\'], array(\'test_form\' => false) );
// If move was successful, insert WordPress attachment
if ( $movefile && !isset($movefile[\'error\']) ) {
$wp_upload_dir = wp_upload_dir();
$attachment = array(
\'guid\' => $wp_upload_dir[\'url\'] . \'/\' . basename($movefile[\'file\']),
\'post_mime_type\' => $movefile[\'type\'],
\'post_title\' => preg_replace( \'/\\.[^.]+$/\', ”, basename($movefile[\'file\']) ),
\'post_content\' => ”,
\'post_status\' => \'inherit\'
);
$attach_id = wp_insert_attachment($attachment, $movefile[\'file\']);
// Assign the file as the featured image
set_post_thumbnail($post_id, $attach_id);
update_field(\'my_image_upload\', $attach_id, $post_id);
}
return $post_id;
}
add_filter(\'acf/pre_save_post\' , \'my_acf_pre_save_post\');
复制这篇文章中的代码,我下面链接的页面会破坏格式,所以我在上面的示例中修复了它。
资料来源:https://support.advancedcustomfields.com/forums/topic/uploading-imagefile-on-the-front-end/