Support » Plugin vragen » [Plugin: Woocommerce] Validaties toevoegen aan invoerveld?

  • Opgelost Amsterdammer

    (@amsterdammer)


    Eén van de belangrijkste onderdelen van mijn website is het checkout formulier van Woocommerce. Hierin heb ik extra invoervelden toegevoegd, waaronder een veld voor gebruikers die zelf een titel kunnen reserveren.
    Indien deze titel al in gebruik is, dan verschijnt er een error bericht.

    Standaard (met 1 error bericht):

    /**
     * Process the checkout
     **/
    add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');
    
    function my_custom_checkout_field_process() {
        global $woocommerce;
    
        // Check if set, if its not set add an error.
        if (!$_POST['my_field_name'])
             $woocommerce->add_error( __('Please enter something into this new shiny field.') );

    Hieronder is wat ik heb toegevoegd en het werkt. Blijkbaar is deze aanpak slechts hoofdlettergevoelig en werkt al niet meer als ik bijv. Basic1 invoer. Dus dat wordt een haast onmogelijke taak. 🙁

    if ($_POST['my_field_name'] == "basic")
             $woocommerce->add_error( __('<b>Basic</b> bestaat al.', 'woocommerce') );
        if ($_POST['my_field_name'] == "standard")
             $woocommerce->add_error( __('<b>Standard</b> bestaat al.', 'woocommerce') );
        if ($_POST['my_field_name'] == "premium")
             $woocommerce->add_error( __('<b>Premium</b> bestaat al.', 'woocommerce') );

    Klopt het dat het gebruik van Arrays de meest gangbare methode is? Zoals..

    $taken = array ('basic", "standard", "premium", "premium1", "premium2", "etc");

    Zou iemand mij hiermee alstublieft op weg kunnen helpen? Ik heb deze vraag eerder gesteld in andere forums, maar helaas is er niemand die hierop antwoord geeft.

2 reacties aan het bekijken - 1 tot 2 (van in totaal 2)
  • Moderator nielsvanrenselaar

    (@nielsvanrenselaar)

    Om hoofdletter gevoeligheid uit te sluiten kan je de invoer lowercase maken

    http://nl3.php.net/strtolower

    Arrays is wel mooier, bijvoorbeeld:

    $taken = array ('basic", "standard", "premium", "premium1", "premium2", "etc");
    $user_input = strtolower( esc_attr( $_POST['my_field_name'] ) );
    
    if( in_array( $user_input, $taken ) ) {
      $woocommerce->add_error( __('<b>'.ucfirst($user_input).'</b> bestaat al.', 'woocommerce') );
    }

    Niels, hartelijk dank voor de (snelle) reactie.

    En dat stukje code werkt perfect (afgezien van mijn ‘basic” typo)!

2 reacties aan het bekijken - 1 tot 2 (van in totaal 2)
  • Het onderwerp ‘[Plugin: Woocommerce] Validaties toevoegen aan invoerveld?’ is gesloten voor nieuwe reacties.