【问题标题】:Add a profile picture (file upload) on My account > edit account in WooCommerce在我的帐户中添加个人资料图片(文件上传)> 在 WooCommerce 中编辑帐户
【发布时间】:2020-09-12 21:42:21
【问题描述】:

我想添加一个上传个人资料图像字段并将其保存在我的帐户中 > 在 woocommerce 中不使用任何插件编辑帐户。

我在functions.php 中添加了以下代码,以便在我的帐户页面上添加个人资料图片。

add_action( 'woocommerce_edit_account_form', 'add_profile_imageto_edit_account_form' );
function add_profile_imageto_edit_account_form() {
    $user = wp_get_current_user();
    ?>
    <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
        <label for="favorite_color"><?php _e( 'Upload Profile Photo', 'woocommerce' ); ?>  </label>
        <input type="file" name="profile_image" id="profile_image" placeholder="Upload Profile Photo" />
    </p>
    <?php
}

建议任何人如何保存此数据并在编辑帐户页面中显示保存的数据。

【问题讨论】:

    标签: php wordpress file-upload woocommerce hook-woocommerce


    【解决方案1】:

    您有 3 个选项来显示新字段

    1. 作为第一个字段使用woocommerce_edit_account_form_start 钩子(在我的代码中使用)
    2. 在现有字段之后使用woocommerce_edit_account_form hook
    3. 在特定位置,覆盖myaccount/form-edit-account.php 模板文件。

    使用的功能:显示图像。

    可能需要为布局添加额外的 CSS

    // Add field
    function action_woocommerce_edit_account_form_start() {
        ?>
        <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
            <label for="image"><?php esc_html_e( 'Image', 'woocommerce' ); ?>&nbsp;<span class="required">*</span></label>
            <input type="file" class="woocommerce-Input" name="image" accept="image/x-png,image/gif,image/jpeg">
        </p>
        <?php
    }
    add_action( 'woocommerce_edit_account_form_start', 'action_woocommerce_edit_account_form_start' );
    
    // Validate
    function action_woocommerce_save_account_details_errors( $args ){
        if ( isset($_POST['image']) && empty($_POST['image']) ) {
            $args->add( 'image_error', __( 'Please provide a valid image', 'woocommerce' ) );
        }
    }
    add_action( 'woocommerce_save_account_details_errors','action_woocommerce_save_account_details_errors', 10, 1 );
    
    // Save
    function action_woocommerce_save_account_details( $user_id ) {  
        if ( isset( $_FILES['image'] ) ) {
            require_once( ABSPATH . 'wp-admin/includes/image.php' );
            require_once( ABSPATH . 'wp-admin/includes/file.php' );
            require_once( ABSPATH . 'wp-admin/includes/media.php' );
    
            $attachment_id = media_handle_upload( 'image', 0 );
    
            if ( is_wp_error( $attachment_id ) ) {
                update_user_meta( $user_id, 'image', $_FILES['image'] . ": " . $attachment_id->get_error_message() );
            } else {
                update_user_meta( $user_id, 'image', $attachment_id );
            }
       }
    }
    add_action( 'woocommerce_save_account_details', 'action_woocommerce_save_account_details', 10, 1 );
    
    // Add enctype to form to allow image upload
    function action_woocommerce_edit_account_form_tag() {
        echo 'enctype="multipart/form-data"';
    } 
    add_action( 'woocommerce_edit_account_form_tag', 'action_woocommerce_edit_account_form_tag' );
    

    显示图像(可以在任何地方使用,只要您调整所需的挂钩)

    // Display
    function action_woocommerce_edit_account_form() {
        // Get current user id
        $user_id = get_current_user_id();
    
        // Get attachment id
        $attachment_id = get_user_meta( $user_id, 'image', true );
    
        // True
        if ( $attachment_id ) {
            $original_image_url = wp_get_attachment_url( $attachment_id );
    
            // Display Image instead of URL
            echo wp_get_attachment_image( $attachment_id, 'full');
        }
    } 
    add_action( 'woocommerce_edit_account_form', 'action_woocommerce_edit_account_form' );
    

    【讨论】:

      猜你喜欢
      • 2018-12-08
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      • 2011-11-15
      • 1970-01-01
      相关资源
      最近更新 更多