Assistente di modulo

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.

ImpostazioneRichiestoDescrizione
post_idQuesto è l'ID del post o del prodotto con cui si desidera interagire.
idQuesta è la chiave meta corrispondente o il campo del database
valorenoQuesto è il valore dal database, se non è definito, l'ID viene utilizzato per chiamare internamente get_post_meta()
etichettanoQuesta è l'etichetta visualizzata sulla pagina
classenoQuesto è il codice HTML che definisce i tag di apertura per il contenitore wrapper
segnapostonoQuesto è il testo segnaposto che viene visualizzato
classe_wrappernoQuesta è la classe per il contenitore wrapper
wrapper_startnoQuesto è il codice HTML che definisce i tag di chiusura per il contenitore wrapper
wrapper_endnoQuesto è il tipo di campo: testo (predefinito), nascosto, checkbox
valore_cbnoQuesto è il valore della checkbox, richiesto solo se hai definito il tipo come checkbox
tiponoQuesto è il tipo di campo: testo (predefinito), nascosto, checkbox
mostra_etichettanoQuesto 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.

ImpostazioneRichiestoDescrizione
post_idQuesto è l'ID del post o del prodotto con cui si desidera interagire.
idQuesto imposterà la classe CSS, lascia uno spazio tra le classi per specificarne più di una
valorenoQuesto è il valore dal database, se non è definito, l'ID viene utilizzato per chiamare internamente get_post_meta()
etichettanoQuesta è l'etichetta visualizzata sulla pagina
classenoQuesto è il codice HTML che definisce i tag di apertura per il contenitore wrapper
segnapostonoQuesto è il testo segnaposto che viene visualizzato
colonnenoIl numero di colonne che avrà l'area di testo
righenoIl numero di righe che l'area di testo avrà
wrapper_startnoQuesto è il codice HTML che definisce i tag di chiusura per il contenitore wrapper
wrapper_endnoQuesto imposterà la classe CSS, e lascerà uno spazio tra le classi per specificarne più di una
stilenoIl 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 PrefissoEsempio
Prodotto_wcv_custom_product__wcv_custom_product_ingredients
Prodottowcv_custom_product_wcv_custom_product_delivery_time
Impostazioni e Iscrizione_wcv_custom_settings__wcv_custom_settings_bankname
Impostazioni e Iscrizionewcv_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 PrefissoEsempio
Prodotto_wcv_custom_taxonomy__wcv_custom_taxonomy_subjects
Prodottowcv_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
inputdo_action( ‘wcv_form_input_before_’. $field[ ‘id’ ], $field );
 selectdo_action( ‘wcv_form_select_before_’. $field[ ‘id’ ], $field );
select2 do_action( ‘wcv_form_select2_before_’. $field[ ‘id’ ], $field );
nested_selectdo_action( ‘wcv_form_nested_select_before_’. $field[ ‘id’ ], $field );
textareado_action( ‘wcv_form_textarea_before_’. $field[ ‘id’ ], $field );
product_media_uploaderdo_action( ‘wcv_form_product_media_uploader_before_product_media_uploader’, $post_id );
file_uploaderdo_action( ‘wcv_form_file_uploader_before_’. $field[ ‘id’ ], $field );
submitdo_action( ‘wcv_form_submit_before_’. $field[ ‘id’ ], $field );
country_select2do_action( ‘wcv_form_country_select2_before_’. $field[ ‘id’ ], $field );
wcv_terms_checklistdo_action( ‘wcv_form_wcv_terms_checklist_before_’. $field[ ‘id’ ], $field );
custom_fielddo_action( ‘wcv_form_custom_field_before_’. $field[ ‘id’ ], $field );

Azioni Successive

CampoAzione
inputdo_action( ‘wcv_form_input_after_’. $field[ ‘id’ ], $field );
 selectdo_action( ‘wcv_form_select_after_’. $field[ ‘id’ ], $field ); &nbsp;
select2 do_action( ‘wcv_form_select2_after_’. $field[ ‘id’ ], $field );
nested_selectdo_action( ‘wcv_form_nested_select_after_’. $field[ ‘id’ ], $field );
textareado_action( ‘wcv_form_textarea_after_’. $field[ ‘id’ ], $field );
product_media_uploaderdo_action( ‘wcv_form_product_media_uploader_after_product_media_uploader’, $post_id );
file_uploaderdo_action( ‘wcv_form_file_uploader_after_’. $field[ ‘id’ ], $field ); =
submitdo_action( ‘wcv_form_submit_after_’. $field[ ‘id’ ], $field );
country_select2do_action( ‘wcv_form_country_select2_after_’. $field[ ‘id’ ], $field );
wcv_terms_checklistdo_action( ‘wcv_form_wcv_terms_checklist_after_’. $field[ ‘id’ ], $field );
custom_fielddo_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');
Questo articolo è stato utile?

Articoli Correlati

Completa il tuo acquisto