Supporto » Sviluppare con WordPress » Campi personalizzati obbligatori

  • Ho trovato sul web un codice che si riferisce a wooCommerce, io non ho wooCommerce ma penso che questo codice potrebbe fare al caso mio, se ho capito bene serve a rendere dei campi obbligatori, se uno non li riempie esce una scritta di avviso:

    woocommerce_wp_text_input(
      array(
        'id' => 'special_price',
        'label' => __( 'Wholesaler Price *', 'woocommerce' ),
        'placeholder' => '',
        'desc_tip' => 'true',
        'required' => 'true',
        'description' => __( 'Enter wholesaler price here.', 'woocommerce' )
      )
    );

    Io ad es. ho un campo personalizzato, titolo “nome”, meta key “function_name”, come potrei adattare il codice?

    La pagina su cui ho bisogno di aiuto: [devi essere connesso per vedere il link]

Stai visualizzando 5 risposte - dal 1 al 5 (di 5 totali)
  • Ciao Sacconi,

    il link manda ad una pagina assente. https://test.sacconicase.com/404/

    Se il campo in questione fa parte di un form, ebbene, ogni plugin di contact form consente di rendere obbligatori o meno i campi.

    Se si tratta di qualche altra cosa bisogna testare il codice che hai trovato, prima di modificarlo. Si tratta di una funzione e quindi deve essere chiamata da un hook adatto di WP per inserirsi nel flusso di WP al punto giusto. Bisognerà scrivere una riga tipo una di queste due:

    add_action( 'hook wp adatto', 'woocommerce_wp_text_input');
    
    add_filter( 'hook wp adatto', 'woocommerce_wp_text_input');

    Una di queste due dobrebbe andare bene, non entrambe. Se sei dentro un namespace dichiarato all’inizio del file sarà il caso di tenerne conto, Precedenza e numero di argomenti è meglio vedere il caso pratico.

    Chi ha creato la discussione sacconi

    (@sacconi)

    Il link non si apre perchè ho cambiato l’indirizzo del log in comunque puoi considerare : /wp-admin/post-new.php , la pagina per editare un nuovo post. Il mio custom field è così:

    add_action( 'add_meta_boxes_post', "name_add_meta_box" );
    
    /*
     * Routine to add a meta box.  Called via a filter hook once WordPress is initialized
     */
    function name_add_meta_box(){
        add_meta_box(
            "name_meta_box",  // An ID for the Meta Box.  Make it unique to your plugin
            __( "Nome", 'textdomain' ),  // The title for your Meta Box
            "name_meta_box_render",  // A callback function to fill the Meta Box with the desired UI in the editor
            "post",  // The screen name - in this case the name of our custom post type
            "side"  // The context or placement for the meta box.  Choose "normal", "side" or "advanced"
        );
    }
    
    /*
     * Routine to display a custom meta box editor
     * Note: In this example our custom meta data is saved as a row in the postmeta database table.
     * $post PostObject An object representing a WordPress post that is currently being loaded in the post editor.
     */
    function name_meta_box_render( $post ){
    
        // Get the name and display it in a text field
        $name = get_post_meta( $post->ID, "function_name", true );
        echo '<div><input type="text" name="function_name" value="'.$name.'" placeholder="Nome" /></div>';
      
    }
    
    // Hook into the save routine for posts
    add_action( 'save_post', 'name_meta_box_save');
    
    /*
     * Routine to save the custom post meta data from the editor
     * Note: We retrieve the form data through the PHP Global $_POST
     * $post_id int The ID of the post being saved
     */
    function name_meta_box_save( $post_id ){
         
        // Check to see if this is our custom post type (remove this check if applying the meta box globally)
        if($_POST['post_type'] == "post"){
            
            // Retrieve the values from the form
            $name = $_POST['function_name'];
            
    
            // Clean, sanitize and validate the input as appropriate
    
            // Save the updated data into the custom post meta database table
            update_post_meta( $post_id, "function_name", $name );
            
    
        }     
    }
    

    cosa aggiungo per renderlo obbligatorio, ossia se non lo riempio non posso salvare la pagina ed esce un messaggio di avviso? Oppure come cambio il codice sopra citato? grazie

    Moderatore Cristiano Zanca

    (@cristianozanca)

    Salve @sacconi ,

    Se si tratta di campi custom del checkout di WooCommerce, come illustrato nella sua documentazione:
    https://woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/

    la voce “required” è quella che rende un campo obbligatorio da compilare

    required – true or false, whether or not the field is require

    come presente all’inizio di questo topic:

    'required' => 'true',

    Invece i custom fields di WordPress sono una funzionalità differente e sono illustrati in questi tutorial:

    https://wordpress.org/documentation/article/assign-custom-fields/

    è possibile anche utilizzare il plugin gratuito ACF:

    https://wordpress.org/plugins/advanced-custom-fields/

    Cordiali Saluti

    Eh già,

    ” Evitare di reinventare la ruota “. Si dice sempre ed è meglio anche ricordarselo sempre.

    Il plugin segnalato da @cristianozanca , ACF funziona bene. https://wordpress.org/plugins/advanced-custom-fields/

    Si può impostare, nella pagina di creazione / editing dei post un extra campo nuovo, che si chiama “Nome”. Pari pari a quel che fa il frammento di codice postato.

    Solo che ACF fornisce un controllo completo del campo, compreso il fatto di essere “required”.

    Inoltre il frammento dev’essere piuttosto datato perché non presenta nessuna sanificazione e quindi andrebbe rivisto completamente, anche nella logica. Meglio non buttare via il tempo.

    Ciao.

    Chi ha creato la discussione sacconi

    (@sacconi)

    Dipendere da terze parti per tutto e riempirsi di plug in non è il massimo, ne ho già tanti di plug-in, il sito può anche appesantirsi o possono fare conflitto tra loro. Poi quello che è gratis può anche diventare a pagamento. Ad es ho lasciato perdere ColorMag proprio per questo e ho scelto underscore come tema. Quando è uscita l’ultima versione, pur avendo un tema figlio ho dovuto rimetter mano a tutti i css e anche all’organizzazione delle cartelle sul server, e anche così non mi va più bene. Il codice che ho citato dovrebbe essere del 2019, l’ho trovato qui: https://www.wpdevhub.com/2019/saving-and-retrieving-data-from-a-custom-meta-box/ , se ritieni che sia obsoleto magari me ne puoi suggerire uno più recente?

Stai visualizzando 5 risposte - dal 1 al 5 (di 5 totali)
  • Il topic ‘Campi personalizzati obbligatori’ è chiuso a nuove risposte.