WC Vendors ha una classe di helper per i moduli che consente di generare il front-end dai campi definiti. Questi vengono utilizzati su tutti i moduli forniti da WC Vendors Pro. Questi possono essere meta personalizzati o campi meta esistenti da plugin di terze parti. Tutti i campi del modulo sono definiti utilizzando una chiamata statica alla classe di helper per i moduli e analizzando un array di opzioni. Verranno forniti tutti gli esempi di codice per far funzionare il campo, inclusa la definizione del campo, il salvataggio del campo e la sua visualizzazione su un modulo pertinente.
Tutti i moduli front-end supportano la cattura e l'archiviazione automatica di campi meta personalizzati se utilizzano un prefisso predefinito per la chiave meta pertinente al modulo che si desidera personalizzare. A meno che non si abbia un motivo per definire le chiavi meta nominate, è altamente raccomandato utilizzare il nostro codice integrato automatico per salvare i nuovi campi del modulo.
Campi supportati
Ci sono diversi campi supportati dall'helper per i moduli che rendono più facile la generazione di campi modulo nel nostro front-end. Tutti i moduli in WC Vendors Pro utilizzano questo sistema per generare i campi modulo sul front-end. Ci sono alcuni campi richiesti per generare un campo, fornendo campi opzionali che offrono flessibilità su ciò che viene visualizzato.
Campi Helper Modulo
- Input (testo, nascosto, checkbox)
- TextArea
- Select
- Select2
- Select nidificato
- Select Paese
- Pulsante di invio
- Caricatore file
Nota
Le seguenti definizioni di codice sono solo esempi e dovrai modificare gli esempi di codice per riflettere i valori richiesti.
Campo di input
WCVendors_Pro_Form_Helper::input()
Questo tipo di campo viene utilizzato per generare un campo di testo standard, un campo di testo nascosto o una casella di controllo. Ci sono solo tre impostazioni richieste per generare il campo di input, mentre le impostazioni opzionali ti offrono flessibilità e controllo su una serie di opzioni diverse. La seguente tabella delinea i vari attributi disponibili durante la creazione di un campo di input. Questi sono definiti come un array di attributi, dove l'attributo definito è la chiave dell'array e il valore è l'output desiderato.
| Impostazione | Richiesto | Descrizione |
| post_id | sì | Questo è l'ID del post o del prodotto con cui si desidera interagire. |
| id | sì | Questa è la chiave meta corrispondente o il campo del database |
| valore | no | Questo è il valore dal database, se non è definito, l'ID viene utilizzato per chiamare internamente get_post_meta() |
| etichetta | no | Questa è l'etichetta visualizzata sulla pagina |
| classe | no | Questo è il codice HTML che definisce i tag di apertura per il contenitore wrapper |
| segnaposto | no | Questo è il testo segnaposto che viene visualizzato |
| classe_wrapper | no | Questa è la classe per il contenitore wrapper |
| wrapper_start | no | Questo è il codice HTML che definisce i tag di chiusura per il contenitore wrapper |
| wrapper_end | no | Questo è il tipo di campo: testo (predefinito), nascosto, checkbox |
| valore_cb | no | Questo è il valore della checkbox, richiesto solo se hai definito il tipo come checkbox |
| tipo | no | Questo è il tipo di campo: testo (predefinito), nascosto, checkbox |
| mostra_etichetta | no | Questo ti permette di mostrare e nascondere l'etichetta per l'input |
Campo di testo
Non devi specificare l'attributo type negli argomenti, poiché questo è il tipo di campo predefinito. Il codice seguente è un esempio di un input di testo definito, che visualizza il titolo del prodotto che vedi su tutti i nostri moduli prodotto. Un campo di testo è il tipo di input predefinito, motivo per cui non è necessario specificare l'attributo type per questo.
Esempio di campo di testo
WCVendors_Pro_Form_Helper::input( array( 'post_id' => $post_id, 'id' => 'post_title', 'label' => __( 'Product Name', 'wcvendors-pro' ), 'value' => $product_title, ) );
Campo nascosto
I campi nascosti vengono utilizzati nei moduli per tracciare e archiviare informazioni con il tuo modulo quando non richiedi l'input dell'utente. Ci sono momenti in cui le integrazioni con plugin di terze parti richiederanno questo tipo di campo. Questo tipo di campo può anche essere utilizzato se si desidera codificare a livello di codice un valore per i propri venditori, come il prezzo o le categorie.
Esempio di campo nascosto
WCVendors_Pro_Form_Helper::input( array( 'post_id' => $post_id, 'type' => 'hidden', 'id' => 'post_id', 'value' => $post_id ) );
Checkbox
Le checkbox vengono utilizzate nei vari moduli. Per definire una checkbox utilizzare la seguente definizione. A causa di come vengono generate le checkbox, quando la checkbox viene deselezionata dopo essere stata precedentemente selezionata, è necessario un passaggio aggiuntivo che richiede l'aggancio all'azione di salvataggio della pagina delle impostazioni o del prodotto per verificare se il valore non è presente per rimuoverlo.
Esempio di campo checkbox
add_action( 'wcvendors_settings_after_seller_info', 'checkbox_check' );
function checkbox_check(){
$key = '_wcv_custom_settings_checkbox3';
$value = get_user_meta( get_current_user_id(), $key, true );
WCVendors_Pro_Form_Helper::input( apply_filters( $key, array(
'id' => $key,
'label' => __( 'Fairtrade', 'wcvendors-pro' ),
'type' => 'checkbox',
'desc_tip' => true,
'value' => $value,
'description' => __('Check this box if you are fairtrade.', 'wcvendors-pro'),
) )
);
}
function fairtrade( $vendor_id ) {
if ( ! isset( $_POST[ '_wcv_custom_settings_checkbox3' ] ) ){
delete_user_meta( $vendor_id, '_wcv_custom_settings_checkbox3' );
}
}
add_action ('wcv_pro_store_settings_saved','fairtrade');
Textarea
WCVendors_Pro_Form_Helper::textarea()
Il campo textarea ti permette di creare campi textarea su vari moduli. La tabella seguente delinea i vari attributi disponibili quando si crea un campo di testo. Questi sono definiti come un array di attributi, dove l'attributo definito è la chiave dell'array e il valore è l'output desiderato.
| Impostazione | Richiesto | Descrizione |
| post_id | sì | Questo è l'ID del post o del prodotto con cui si desidera interagire. |
| id | sì | Questo imposterà la classe CSS, lascia uno spazio tra le classi per specificarne più di una |
| valore | no | Questo è il valore dal database, se non è definito, l'ID viene utilizzato per chiamare internamente get_post_meta() |
| etichetta | no | Questa è l'etichetta visualizzata sulla pagina |
| classe | no | Questo è il codice HTML che definisce i tag di apertura per il contenitore wrapper |
| segnaposto | no | Questo è il testo segnaposto che viene visualizzato |
| colonne | no | Il numero di colonne che avrà l'area di testo |
| righe | no | Il numero di righe che l'area di testo avrà |
| wrapper_start | no | Questo è il codice HTML che definisce i tag di chiusura per il contenitore wrapper |
| wrapper_end | no | Questo imposterà la classe CSS, e lascerà uno spazio tra le classi per specificarne più di una |
| stile | no | Il tag style |
Esempio Campo Textarea
WCVendors_Pro_Form_Helper::textarea( apply_filters( 'wcv_product_description', array( 'post_id' => $post_id, 'id' => 'post_content', 'label' => __( 'Product description', 'wcvendors-pro' ), 'value' => $product_description, 'placeholder' => __( 'Please add a full description of your product here', 'wcvendors-pro' ), 'custom_attributes' => $custom_attributes, ) ) );
Select
WCVendors_Pro_Form_Helper::select( )
Il campo select ti permette di creare un semplice menu a tendina specificando le opzioni o la tassonomia da cui popolare automaticamente dal backend di WordPress.
Esempio Campo Select
WCVendors_Pro_Form_Helper::select( array( 'post_id' => $post_id, 'id' => '_download_type', 'class' => 'select', 'label' => __( 'Download Type', 'wcvendors-pro' ), 'desc_tip' => 'true', 'description' => sprintf( __( 'Choose a download type - this controls the <a href="%s">http://schema.org</a>.', 'wcvendors-pro' ), 'http://schema.org/' ), 'options' => array( '' => __( 'Standard Product', 'wcvendors-pro' ), 'application' => __( 'Application/Software', 'wcvendors-pro' ), 'music' => __( 'Music', 'wcvendors-pro' ) ), // 'custom_attributes' => $custom_attributes, ) );
Select2
WCVendors_Pro_Form_Helper::select2()
Il campo select2 fornisce un select migliorato che offre maggiore usabilità e opzioni per selezionare valori multipli. Questo può essere utilizzato per definire le tue opzioni come nell'esempio select sopra, o agganciarsi a una tassonomia definita come nell'esempio sottostante. Utilizza il popolare framework select2 per ottenere questo risultato.
Esempio Campo Select2
WCVendors_Pro_Form_Helper::select2( array( 'post_id' => $post_id, 'id' => 'product_cat[]', 'taxonomy' => 'product_cat', 'class' => 'category-select2', 'show_option_none' => $show_option_none, 'taxonomy_args' => array( 'hide_empty' => 0, 'orderby' => 'order', 'exclude' => $exclude, ), 'label' => ( $multiple ) ? __( 'Categories', 'wcvendors-pro' ) : __( 'Category', 'wcvendors-pro' ), ) );
Caricatore file
WCVendors_Pro_Form_Helper::file_uploader()
L'helper del modulo fornisce un caricatore di file di base che ti permette di aggiungere un singolo file per input al modulo. Questo è utile se hai bisogno di file aggiuntivi da aggiungere a un prodotto o al negozio. Sono supportati diversi formati di file
- Immagine
- Documento
- Audio
- Video
Le estensioni dei file per i formati sopra sono determinate in base a quali tipi di file la tua installazione di WordPress consente. Se non definisci il tipo di file per il secondo argomento, allora il tipo di file predefinito è 'immagine'
Esempio Campo Caricamento File Immagine
function wcv_image_uploader( ){
echo '<hr />';
echo '<h3>Image Uploader</h3>';
$value = get_user_meta( get_current_user_id(), '_wcv_custom_settings_image_example', true );
WCVendors_Pro_Form_Helper::file_uploader( array(
'id' => '_wcv_custom_settings_image_example',
'header_text' => __('Image uploader', 'wcvendors-pro' ),
'add_text' => __('Add image file', 'wcvendors-pro' ),
'remove_text' => __('Remove image file', 'wcvendors-pro' ),
'image_meta_key' => '_wcv_custom_settings_image_example',
'save_button' => __('Add image file', 'wcvendors-pro' ),
'window_title' => __('Select an Image', 'wcvendors-pro' ),
'value' => $value
), 'image'
);
}
Esempio Output Codice
Esempio Campo Caricamento File Documento
function wcv_doc_uploader( ){
echo '<hr />';
echo '<h3>Document Uploader</h3>';
$value = get_user_meta( get_current_user_id(), '_wcv_custom_settings_doc_example', true );
WCVendors_Pro_Form_Helper::file_uploader( array(
'id' => '_wcv_custom_settings_doc_example',
'header_text' => __('Document uploader', 'wcvendors-pro' ),
'add_text' => __('Add document', 'wcvendors-pro' ),
'remove_text' => __('Remove document', 'wcvendors-pro' ),
'file_meta_key' => '_wcv_custom_settings_doc_example',
'save_button' => __('Add document', 'wcvendors-pro' ),
'window_title' => __('Select a document', 'wcvendors-pro' ),
'value' => $value
), 'document'
);
}
Esempio Output Codice

Esempio Caricamento File Audio
function wcv_audio_uploader( ){
echo '<hr />';
echo '<h3>Audio Uploader</h3>';
$value = get_user_meta( get_current_user_id(), '_wcv_custom_settings_audio_example', true );
WCVendors_Pro_Form_Helper::file_uploader( array(
'id' => '_wcv_custom_settings_audio_example',
'header_text' => __('Audio uploader', 'wcvendors-pro' ),
'add_text' => __('Add audio', 'wcvendors-pro' ),
'remove_text' => __('Remove audio', 'wcvendors-pro' ),
'file_meta_key' => '_wcv_custom_settings_audio_example',
'save_button' => __('Add audio', 'wcvendors-pro' ),
'window_title' => __('Select audio', 'wcvendors-pro' ),
'value' => $value
), 'audio'
);
}
Esempio Output Codice

Esempio Caricamento File Video
function wcv_video_uploader( ){
echo '<hr />';
echo '<h3>Video Uploader</h3>';
$value = get_user_meta( get_current_user_id(), '_wcv_custom_settings_video_example', true );
WCVendors_Pro_Form_Helper::file_uploader( array(
'id' => '_wcv_custom_settings_video_example',
'header_text' => __('Video uploader', 'wcvendors-pro' ),
'add_text' => __('Add video', 'wcvendors-pro' ),
'remove_text' => __('Remove video', 'wcvendors-pro' ),
'file_meta_key' => '_wcv_custom_settings_video_example',
'save_button' => __('Add video', 'wcvendors-pro' ),
'window_title' => __('Select video', 'wcvendors-pro' ),
'value' => $value
), 'video'
);
}
Esempio Output Codice
Salvataggio Automatico Campi
Per sfruttare la nostra funzione di salvataggio automatico dei campi dovrai definire le tue chiavi meta personalizzate con i nostri prefissi predefiniti. Tutti i prefissi che iniziano con '_' sono nascosti dal modulo di modifica nella dashboard di WordPress. Se hai bisogno che il campo venga visualizzato nel backend affinché gli amministratori possano modificarlo, allora ometti l'underscore dal prefisso.
Cosa significa? Significa che se definisci il tuo campo modulo e inizi l'ID con il prefisso pertinente qui sotto, allora il controller del modulo salverà automaticamente la chiave meta.
Prefissi Tipi Campo Disponibili
| Nome Modulo | Nome Prefisso | Esempio |
| Prodotto | _wcv_custom_product_ | _wcv_custom_product_ingredients |
| Prodotto | wcv_custom_product_ | wcv_custom_product_delivery_time |
| Impostazioni e Iscrizione | _wcv_custom_settings_ | _wcv_custom_settings_bankname |
| Impostazioni e Iscrizione | wcv_custom_settings_ | wcv_custom_settings_bankname |
| Coupon | _wcv_coupon_post_meta_ | _wcv_coupon_post_meta_newfield |
Esempio di salvataggio automatico campo prodotto
WCVendors_Pro_Form_Helper::input( array( 'post_id' => $object_id, 'id' => '_wcv_custom_product_ingredients', 'label' => __( 'Ingredients', 'wcvendors-pro' ), 'placeholder' => __( 'Ingredients', 'wcvendors-pro' ), 'desc_tip' => 'true', 'description' => __( 'The product ingredients', 'wcvendors-pro' ), ) );
Esempio di salvataggio automatico campo modulo impostazioni e iscrizione
add_action( 'wcvendors_settings_after_seller_info', 'checkbox_check' );
function checkbox_check(){
$key = '_wcv_custom_settings_checkbox3';
$value = get_user_meta( get_current_user_id(), $key, true );
WCVendors_Pro_Form_Helper::input( apply_filters( $key, array(
'id' => $key,
'label' => __( 'Fairtrade', 'wcvendors-pro' ),
'type' => 'checkbox',
'desc_tip' => true,
'value' => $value,
'description' => __('Check this box if you are fairtrade.', 'wcvendors-pro'),
) )
);
}
Questo funziona per qualsiasi tipo di campo che non sia un multi-selezionabile.
Salvataggi Tassonomia
Se hai definito una tassonomia personalizzata, supportiamo il salvataggio automatico di queste. Tutto ciò che devi fare è definire l'ID del campo con lo stesso formato dei singoli campi. Il nome della tassonomia sarà ancora quello che hai definito durante la registrazione della tassonomia. Devi solo usare questi prefissi per i nomi dei campi nel modulo.
| Nome Modulo | Nome Prefisso | Esempio |
| Prodotto | _wcv_custom_taxonomy_ | _wcv_custom_taxonomy_subjects |
| Prodotto | wcv_custom_taxonomy_ | wcv_custom_taxonomy_subjects |
Esempio di salvataggio automatico tassonomia prodotto
Quello che segue è un esempio di tassonomia definita personalizzata.
WCVendors_Pro_Form_helper::select2( array(
'post_id' => $object_id,
'id' => '_wcv_custom_taxonomy_subjects[]',
'class' => 'select2',
'custom_tax' => true,
'label' => __('Subjects', 'wcvendors-pro'),
'show_option_none' => __('Select Subject(s)', 'wcvendors-pro'),
'taxonomy' => 'subjects',
'taxonomy_args' => array(
'hide_empty' => 0,
),
'custom_attributes' => array( 'multiple' => 'multiple' ),
)
);
Azioni
Ogni input del modulo ha un'azione _before_ e _after_ che ti consente di agganciarti al modulo prima o dopo il rendering dell'elemento. Tutti i tipi di modulo definiti sopra forniscono questo accesso. L'ID del campo viene aggiunto alla fine delle azioni in modo da poter indirizzare campi specifici definiti.
Azioni Prima
| Campo | Azione |
| input | do_action( ‘wcv_form_input_before_’. $field[ ‘id’ ], $field ); |
| select | do_action( ‘wcv_form_select_before_’. $field[ ‘id’ ], $field ); |
| select2 | do_action( ‘wcv_form_select2_before_’. $field[ ‘id’ ], $field ); |
| nested_select | do_action( ‘wcv_form_nested_select_before_’. $field[ ‘id’ ], $field ); |
| textarea | do_action( ‘wcv_form_textarea_before_’. $field[ ‘id’ ], $field ); |
| product_media_uploader | do_action( ‘wcv_form_product_media_uploader_before_product_media_uploader’, $post_id ); |
| file_uploader | do_action( ‘wcv_form_file_uploader_before_’. $field[ ‘id’ ], $field ); |
| submit | do_action( ‘wcv_form_submit_before_’. $field[ ‘id’ ], $field ); |
| country_select2 | do_action( ‘wcv_form_country_select2_before_’. $field[ ‘id’ ], $field ); |
| wcv_terms_checklist | do_action( ‘wcv_form_wcv_terms_checklist_before_’. $field[ ‘id’ ], $field ); |
| custom_field | do_action( ‘wcv_form_custom_field_before_’. $field[ ‘id’ ], $field ); |
Azioni Successive
| Campo | Azione |
| input | do_action( ‘wcv_form_input_after_’. $field[ ‘id’ ], $field ); |
| select | do_action( ‘wcv_form_select_after_’. $field[ ‘id’ ], $field ); |
| select2 | do_action( ‘wcv_form_select2_after_’. $field[ ‘id’ ], $field ); |
| nested_select | do_action( ‘wcv_form_nested_select_after_’. $field[ ‘id’ ], $field ); |
| textarea | do_action( ‘wcv_form_textarea_after_’. $field[ ‘id’ ], $field ); |
| product_media_uploader | do_action( ‘wcv_form_product_media_uploader_after_product_media_uploader’, $post_id ); |
| file_uploader | do_action( ‘wcv_form_file_uploader_after_’. $field[ ‘id’ ], $field ); = |
| submit | do_action( ‘wcv_form_submit_after_’. $field[ ‘id’ ], $field ); |
| country_select2 | do_action( ‘wcv_form_country_select2_after_’. $field[ ‘id’ ], $field ); |
| wcv_terms_checklist | do_action( ‘wcv_form_wcv_terms_checklist_after_’. $field[ ‘id’ ], $field ); |
| custom_field | do_action( ‘wcv_form_custom_field_after_’. $field[ ‘id’ ], $field ); |
Esempio
Se conosci l’ID del campo, puoi agganciarti all’azione. Ad esempio, l’ID del campo Titolo del Post è post_title, quindi le azioni prima e dopo sarebbero le seguenti. Dovresti quindi definire le informazioni da visualizzare prima o dopo, con le funzioni analizzate.
add_action( ‘wcv_form_input_before_post_title’, ‘add_field_before_post_title’ );
add_action( 'wcv_form_input_before_post_title', 'add_field_before_post_title' ); add_action( 'wcv_form_input_after_post_title', 'add_field_after_post_title');

