Fügen Sie ein benutzerdefiniertes Dropdown-Feld unter Mein Konto > Konto in WooCommerce bearbeiten hinzu

Lesezeit: 4 Minuten

Fugen Sie ein benutzerdefiniertes Dropdown Feld unter Mein Konto Konto
Entwickler 04

Ich verwende den folgenden Code, um ein zusätzliches Eingabefeld auf der Seite „Konto bearbeiten“ von WooCommerce anzuzeigen.

/**
 * Step 1. Add your field - Age Range
 */
add_action( 'woocommerce_edit_account_form', 'misha_add_age_range_field_account_form' );
function misha_add_age_range_field_account_form() {
    
    echo "<h4> Please fill in the following details to complete your profile for review </h4>";

    woocommerce_form_field(
        'certified_age_range',
        array(
            'type'        => 'text',
            'required'    => true, // remember, this doesn't make the field required, just adds an "*"
            'label'       => 'Your Age',
            'description' => '',
        ),
        get_user_meta( get_current_user_id(), 'certified_age_range', true ) // get the data
    );

}

/**
 * Step 2. Save field value
 */
add_action( 'woocommerce_save_account_details', 'misha_save_age_range_account_details' );
function misha_save_age_range_account_details( $user_id ) {

    update_user_meta( $user_id, 'certified_age_range', sanitize_text_field( $_POST['certified_age_range'] ) );

}

/**
 * Step 3. Make it required
 */
add_filter('woocommerce_save_account_details_required_fields', 'misha_make_field_required');
function misha_make_age_range_field_required( $required_fields ){

    $required_fields['certified_age_range'] = 'Age';
    return $required_fields;
    
}

add_filter( 'woocommerce_customer_meta_fields', 'misha_admin_age_range_field' );

function misha_admin_age_range_field( $admin_fields ) {

    $admin_fields['billing']['fields']['certified_age_range'] = array(
        'label' => 'Age',
        'description' => 'Get Certified Form Field',
    );

    return $admin_fields;

}

Der obige Code funktioniert einwandfrei, und so erscheint das Feld „Alter“ auf der Seite:

Geben Sie hier die Bildbeschreibung ein


Aber jetzt muss ich dieses Feld zu einem Dropdown-Feld anstelle eines einfachen Textfelds machen.

Ich habe versucht, die obige Anpassung mit dem folgenden Code durchzuführen, jedoch ohne das gewünschte Ergebnis. Irgendein Rat?

add_filter( 'woocommerce_save_account_details_required_fields' , 'custom_override_age_field' );
function custom_override_age_field( $account_fields ) {

    $option_age = array(
        '' => __( 'Select your Age Range' ),
        '18-24' => '18-24',
        '25-34' => '25-34',
        '35-44' => '35-44',
        '45-54' => '45-54',
        '55-64' => '55-64',
        '65+' => '65+',
    );

    $account_fields['account_first_name']['type'] = 'select';
    $account_fields['account_first_name']['options'] = $option_age;

    return $account_fields;
}

Dein Code sagt: Schritt 1. Fügen Sie Ihr Feld hinzu – Bei Ihrem Versuch verwenden Sie den Haken aus Schritt 3.. während Schritt 3 anzeigt Machen Sie es erforderlich Das ist also dein erster Fehler.

Die Quintessenz ist, dass Sie im ersten Schritt die bearbeiten müssen woocommerce_form_field die Einstellungen. In Ihrem Code ist der Typ ‘Text’ und Sie müssen dies in ‘Select’ ändern.

Sie erhalten also:

/**
 * Step 1. Add your field - Age Range
 */
function action_woocommerce_edit_account_form() {
    echo "<h4> Please fill in the following details to complete your profile for review </h4>";
    
    // Select field
    woocommerce_form_field( 'certified_age_range', array(
        'type'      => 'select',
        'class'     => array( 'form-row-wide' ),
        'label'     => __( 'Your age', 'woocommerce' ),
        'required'  => true, // remember, this doesn't make the field required, just adds an "*"
        'options'   => array(
            ''          => __( 'Select your age range', 'woocommerce' ),
            '18-24'     => '18-24',
            '25-34'     => '25-34',
            '35-44'     => '35-44',
            '45-54'     => '45-54',
            '55-64'     => '55-64',
            '65+'       => '65+',
        )
    ), get_user_meta( get_current_user_id(), 'certified_age_range', true ) );
}
add_action( 'woocommerce_edit_account_form', 'action_woocommerce_edit_account_form', 10, 0 );

/**
 * Step 2. Make it required
 */
function filter_woocommerce_save_account_details_required_fields( $required_fields ) {
    $required_fields['certified_age_range'] = __( 'Age', 'woocommerce' );
    
    return $required_fields; 
}
add_filter( 'woocommerce_save_account_details_required_fields', 'filter_woocommerce_save_account_details_required_fields', 10, 1 );

/**
 * Step 3. Save field value
 */
function action_woocommerce_save_account_details( $user_id ) {
    if ( isset( $_POST['certified_age_range'] ) ) {
        // Update field
        update_user_meta( $user_id, 'certified_age_range', sanitize_text_field( $_POST['certified_age_range'] ) );
    }
}
add_action( 'woocommerce_save_account_details', 'action_woocommerce_save_account_details', 10, 1 );

/**
 * Step 4. Get address fields for the edit user pages.
 */
function filter_woocommerce_customer_meta_fields( $args ) {
    $args['billing']['fields']['certified_age_range'] = array(
        'label'         => __( 'Age', 'woocommerce' ),
        'description'   => __( 'Get Certified Form Field', 'woocommerce' ),
    );
    
    return $args;
}
add_filter( 'woocommerce_customer_meta_fields', 'filter_woocommerce_customer_meta_fields', 10, 1 );

  • Hallo @7uc1f3r Tausend Dank für deine Hilfe! Der obige Code funktioniert so, wie wir es wollen. Danke noch einmal

    – Entwickler 04

    6. Januar um 8:24 Uhr

998590cookie-checkFügen Sie ein benutzerdefiniertes Dropdown-Feld unter Mein Konto > Konto in WooCommerce bearbeiten hinzu

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy