Formularhelfer

WC Vendors verfügt über eine Formular-Helfer-Klasse, die es ermöglicht, das Frontend aus definierten Feldern zu generieren. Diese werden auf allen Formularen verwendet, die von WC Vendors Pro bereitgestellt werden. Dies können benutzerdefinierte Metadaten oder vorhandene Metadatenfelder von Drittanbieter-Plugins sein. Alle Formularfelder werden mithilfe eines statischen Aufrufs der Formular-Helfer-Klasse und der Verarbeitung eines Array von Optionen definiert. Der gesamte Beispielcode, um das Feld funktionsfähig zu machen, wird bereitgestellt, einschließlich der Definition des Feldes, des Speicherns des Feldes und der Anzeige auf einem relevanten Formular.

Alle Frontend-Formulare unterstützen die automatische Erfassung und Speicherung von benutzerdefinierten Metadatenfeldern, wenn sie ein vordefiniertes Präfix für den Metaschlüssel verwenden, der für das Formular relevant ist, das Sie anpassen möchten. Sofern Sie keinen Grund haben, Ihre benannten Metaschlüssel zu definieren, wird dringend empfohlen, unseren automatischen integrierten Code zum Speichern Ihrer neuen Formularfelder zu verwenden.

Unterstützte Felder 

Es gibt mehrere verschiedene unterstützte Felder mit dem Formular-Helfer, die die Generierung von Formularfeldern in unserem Frontend erleichtern. Alle Formulare in WC Vendors Pro verwenden dieses System, um die Formularfelder im Frontend auszugeben. Es gibt einige erforderliche Felder zum Generieren eines Feldes, während optionale Felder Flexibilität bieten, was angezeigt wird.

Formular-Helfer-Felder

  • Eingabe ( text, hidden, checkbox )
  • Textbereich
  • Auswahl
  • Select2
  • Verschachtelte Auswahl
  • Länderauswahl
  • Senden-Schaltfläche
  • Datei-Uploader

Bitte beachten Sie

Die folgenden Code-Definitionen sind nur Beispiele, und Sie müssten die Code-Beispiele ändern, um die von Ihnen benötigten Werte widerzuspiegeln.

Eingabefeld

WCVendors_Pro_Form_Helper::input()

Dieser Feldtyp wird verwendet, um ein Standard-Textfeld, ein verstecktes Textfeld oder eine Checkbox auszugeben. Es sind nur drei Einstellungen erforderlich, um das Eingabefeld auszugeben, während die optionalen Einstellungen Ihnen Flexibilität und Kontrolle über eine Reihe von verschiedenen Optionen geben. Die folgende Tabelle beschreibt die verschiedenen Attribute, die beim Erstellen eines Eingabefeldes verfügbar sind. Diese werden als Array von Attributen definiert, wobei das definierte Attribut der Array-Schlüssel und der Wert die gewünschte Ausgabe ist.

EinstellungErforderlichBeschreibung
post_idjaDies ist die ID des Beitrags oder Produkts, mit dem Sie interagieren möchten.
IDjaDies ist der entsprechende Metaschlüssel oder Datenbankfeld
wertneinDies ist der Wert aus der Datenbank. Wenn er nicht definiert ist, wird die ID verwendet, um intern get_post_meta() aufzurufen.
labelneinDies ist das auf der Seite angezeigte Label
KlasseneinDies ist der HTML-Code, der die öffnenden Tags für den Wrapper-Container definiert
PlatzhalterneinDies ist der Platzhaltertext, der angezeigt wird
wrapper_classneinDies ist die Klasse für den Wrapper-Container
wrapper_startneinDies ist der HTML-Code, der die schließenden Tags für den Wrapper-Container definiert
wrapper_endneinDies ist der Feldtyp: Text (Standard), Versteckt, Kontrollkästchen
cbvalueneinDies ist der Wert des Kontrollkästchens, erforderlich nur, wenn Sie den Typ als Kontrollkästchen definiert haben
TypneinDies ist der Feldtyp: Text (Standard), Versteckt, Kontrollkästchen
show_labelneinDies ermöglicht es Ihnen, das Label für die Eingabe ein- und auszublenden

Textfeld

Sie müssen das type-Attribut nicht in den Argumenten angeben, da dies der Standardfeldtyp ist. Der folgende Code ist ein Beispiel für eine definierte Texteingabe, die den Produkttitel anzeigt, den Sie auf all unseren Produktformularen sehen. Ein Textfeld ist der Standardeingabetyp, weshalb Sie das Typattribut dafür nicht angeben müssen.

Textfeld-Beispiel

WCVendors_Pro_Form_Helper::input( array( 
	 	'post_id' 			=> $post_id, 
	 	'id'	 			=> 'post_title', 
	 	'label' 			=> __( 'Product Name', 'wcvendors-pro' ),
	 	'value' 			=> $product_title, 
	)
);

Verstecktes Feld

Versteckte Felder werden in Formularen verwendet, um Informationen mit Ihrem Formular zu verfolgen und zu speichern, wenn Sie keine Eingabe vom Benutzer benötigen. Es gibt Zeiten, in denen Integrationen mit Drittanbieter-Plugins diesen Feldtyp erfordern. Dieser Feldtyp kann auch verwendet werden, wenn Sie einen Wert für Ihre Anbieter fest codieren möchten, z. B. den Preis oder die Kategorien.

Beispiel für verstecktes Feld

WCVendors_Pro_Form_Helper::input( array( 
		'post_id'		=> $post_id, 
		'type'			=> 'hidden', 
		'id' 			=> 'post_id', 
		'value'			=> $post_id
	)
);

Kontrollkästchen

Kontrollkästchen werden in verschiedenen Formularen verwendet. Um ein Kontrollkästchen zu definieren, verwenden Sie die folgende Definition. Aufgrund der Art und Weise, wie Kontrollkästchen ausgegeben werden, wenn das Kontrollkästchen nach dem vorherigen Aktivieren nicht aktiviert ist, ist ein zusätzlicher Schritt erforderlich, der das Anhaken der Speicheraktion der Einstellungsseite oder des Produktspeichers erfordert, um zu prüfen, ob der Wert nicht vorhanden ist, um ihn zu entfernen.

Beispiel für Kontrollkästchenfeld

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');

Textbereich

WCVendors_Pro_Form_Helper::textarea()

Das Textbereich-Feld ermöglicht es Ihnen, Textbereich-Felder in verschiedenen Formularen zu erstellen. Die folgende Tabelle beschreibt die verschiedenen Attribute, die beim Erstellen eines Textbereich-Feldes verfügbar sind. Diese werden als Array von Attributen definiert, wobei das definierte Attribut der Array-Schlüssel und der Wert die gewünschte Ausgabe ist.

EinstellungErforderlichBeschreibung
post_idjaDies ist die ID des Beitrags oder Produkts, mit dem Sie interagieren möchten.
IDjaDies legt die CSS-Klasse fest, lassen Sie ein Leerzeichen zwischen den Klassen, um mehrere anzugeben
wertneinDies ist der Wert aus der Datenbank. Wenn er nicht definiert ist, wird die ID verwendet, um intern get_post_meta() aufzurufen.
labelneinDies ist das auf der Seite angezeigte Label
KlasseneinDies ist der HTML-Code, der die öffnenden Tags für den Wrapper-Container definiert
PlatzhalterneinDies ist der Platzhaltertext, der angezeigt wird
SpaltenneinDie Anzahl der Spalten, die das Textfeld haben wird
ZeilenneinDie Anzahl der Zeilen, die das Textfeld haben wird
wrapper_startneinDies ist der HTML-Code, der die schließenden Tags für den Wrapper-Container definiert
wrapper_endneinDies legt die CSS-Klasse fest und lässt einen Leerschritt zwischen den Klassen, um mehrere anzugeben
StilneinDas Style-Tag

Textfeld-Beispiel

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,
						)
					)
				);

Auswahl

WCVendors_Pro_Form_Helper::select()

Das Select-Feld ermöglicht es Ihnen, eine einfache Dropdown-Liste zu erstellen, während Sie die Optionen oder die Taxonomie angeben, um automatisch aus dem WordPress-Backend zu befüllen.

Select-Feld-Beispiel

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()

Das Select2-Feld bietet eine erweiterte Auswahl, die mehr Benutzerfreundlichkeit und Optionen für die Auswahl mehrerer Werte bietet. Dies kann verwendet werden, um Ihre eigenen Optionen zu definieren, wie im Select-Beispiel oben, oder um sich wie im Beispiel unten mit einer definierten Taxonomie zu verbinden. Dies verwendet das beliebte Select2-Framework, um dies zu erreichen.

Select2-Feld-Beispiel

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' ), 
		) 
);

Datei-Uploader

WCVendors_Pro_Form_Helper::file_uploader()

Der Formularhelfer bietet einen einfachen Datei-Uploader, mit dem Sie pro Eingabe eine einzelne Datei zum Formular hinzufügen können. Dies ist nützlich, wenn Sie zusätzliche Dateien zu einem Produkt oder dem Shop hinzufügen müssen. Es werden mehrere Dateiformate unterstützt

  • Bild
  • Dokument
  • Audio
  • Video

Die Dateierweiterungen für die oben genannten Dateiformate werden basierend darauf bestimmt, welche Dateitypen Ihre WordPress-Installation zulässt.  Wenn Sie für das zweite Argument keinen Dateityp definieren, ist der Standard-Dateityp „Bild“

Bilddatei-Upload-Feld-Beispiel

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'
	);
}
Code-Ausgabe-Beispiel

Dokumentdatei-Upload-Feld-Beispiel

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'
	);
}

Code-Ausgabe-Beispiel

Audio-Datei-Upload-Feld-Beispiel

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'
	);
}

Code-Ausgabe-Beispiel

Video-Datei-Upload-Feld-Beispiel

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'
	);
}
Code-Ausgabe-Beispiel

Automatische Feld-Speicherung

Um unsere automatische Feld-Speicherfunktion zu nutzen, müssen Sie Ihre benutzerdefinierten Meta-Schlüssel mit unseren vordefinierten Präfixen definieren. Alle Präfixe, die mit einem „_“ beginnen, werden im Bearbeitungsformular im WordPress-Dashboard ausgeblendet. Wenn das Feld im Backend für Administratoren zur Bearbeitung angezeigt werden soll, lassen Sie den Unterstrich beim Präfix weg.

Was bedeutet das? Es bedeutet, dass, wenn Sie Ihr Formularfeld definieren und die ID mit dem entsprechenden Präfix unten beginnen, der Formularcontroller den Meta-Schlüssel automatisch speichert.

Verfügbare Feldtyp-Präfixe

Formularname Präfix NameBeispiel
Produkt_wcv_custom_product__wcv_custom_product_ingredients
Produktwcv_custom_product_wcv_custom_product_delivery_time
Einstellungen & Anmeldung_wcv_custom_settings__wcv_custom_settings_bankname
Einstellungen & Anmeldungwcv_custom_settings_wcv_custom_settings_bankname
Gutschein_wcv_coupon_post_meta__wcv_coupon_post_meta_newfield

Beispiel für automatisches Speichern von Produktfeldern

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' ), 
	) 
);

Beispiel für automatisches Speichern von Feldern im Einstellungen & Anmeldeformular 

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'),
		) )
	);
}

Dies funktioniert für jeden Feldtyp, der kein Mehrfachauswahlfeld ist.

Taxonomiespeicher

Wenn Sie eine benutzerdefinierte Taxonomie definiert haben, unterstützen wir das automatische Speichern dieser. Alles, was Sie tun müssen, ist die Feld-ID mit dem gleichen Format wie einzelne Felder zu definieren. Der Taxonomie-Name wird immer noch der sein, den Sie bei der Registrierung der Taxonomie definiert haben. Sie müssen diese Präfixe nur für die Feldnamen im Formular verwenden.

Formularname Präfix NameBeispiel
Produkt_wcv_custom_taxonomy__wcv_custom_taxonomy_subjects
Produktwcv_custom_taxonomy_wcv_custom_taxonomy_subjects
Beispiel für automatische Speicherung von Produkt-Taxonomien

Das Folgende ist ein Beispiel für eine benutzerdefinierte Taxonomie.

 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' ), 
		)
);

Aktionen

Jeder Formular-Input hat eine _before_ und _after_ Aktion, die es Ihnen ermöglicht, sich vor oder nach dem Rendern des Elements in das Formular einzuhaken. Alle oben definierten Formular-Typen bieten diesen Zugriff. Die Feld-ID wird am Ende der Aktionen angehängt, damit Sie sich auf bestimmte definierte Felder beziehen können.

Aktionen davor

Feld Aktion
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 );
benutzerdefiniertes_felddo_action( ‘wcv_form_custom_field_before_’. $field[ ‘id’ ], $field );

Aktionen danach

FeldAktion
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 );
benutzerdefiniertes_felddo_action( ‘wcv_form_custom_field_after_’. $field[ ‘id’ ], $field );


Beispiel

Wenn Sie die ID des Feldes kennen, können Sie die Aktion nutzen. Zum Beispiel ist die Feld-ID für den Beitragstitel post_title, daher wären die Aktionen davor und danach die folgenden. Sie würden dann die Informationen definieren, die mit den geparsten Funktionen davor oder danach ausgegeben werden sollen.

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');
War dieser Artikel hilfreich?

Verwandte Artikel

Kauf abschließen