Добавить изображение профиля (загрузка файла) в мою учетную запись> изменить учетную запись в WooCommerce - PullRequest
1 голос
/ 26 мая 2020

Я хочу добавить поле изображения профиля загрузки и сохранить его в «Моя учетная запись»> «Изменить учетную запись без какого-либо плагина в 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
}

Предложите мне кого-нибудь, как сохранить эти данные и отобразить сохраненные данные на странице редактирования учетной записи.

1 Ответ

0 голосов
/ 26 мая 2020

У вас есть 3 варианта для отображения нового поля

  1. В качестве первого поля с использованием хука woocommerce_edit_account_form_start (используется в моем коде)
  2. После существующих полей с использованием хука woocommerce_edit_account_form
  3. В указанном месте c, переопределение 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' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...