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.
| Einstellung | Erforderlich | Beschreibung |
| post_id | ja | Dies ist die ID des Beitrags oder Produkts, mit dem Sie interagieren möchten. |
| ID | ja | Dies ist der entsprechende Metaschlüssel oder Datenbankfeld |
| wert | nein | Dies ist der Wert aus der Datenbank. Wenn er nicht definiert ist, wird die ID verwendet, um intern get_post_meta() aufzurufen. |
| label | nein | Dies ist das auf der Seite angezeigte Label |
| Klasse | nein | Dies ist der HTML-Code, der die öffnenden Tags für den Wrapper-Container definiert |
| Platzhalter | nein | Dies ist der Platzhaltertext, der angezeigt wird |
| wrapper_class | nein | Dies ist die Klasse für den Wrapper-Container |
| wrapper_start | nein | Dies ist der HTML-Code, der die schließenden Tags für den Wrapper-Container definiert |
| wrapper_end | nein | Dies ist der Feldtyp: Text (Standard), Versteckt, Kontrollkästchen |
| cbvalue | nein | Dies ist der Wert des Kontrollkästchens, erforderlich nur, wenn Sie den Typ als Kontrollkästchen definiert haben |
| Typ | nein | Dies ist der Feldtyp: Text (Standard), Versteckt, Kontrollkästchen |
| show_label | nein | Dies 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.
| Einstellung | Erforderlich | Beschreibung |
| post_id | ja | Dies ist die ID des Beitrags oder Produkts, mit dem Sie interagieren möchten. |
| ID | ja | Dies legt die CSS-Klasse fest, lassen Sie ein Leerzeichen zwischen den Klassen, um mehrere anzugeben |
| wert | nein | Dies ist der Wert aus der Datenbank. Wenn er nicht definiert ist, wird die ID verwendet, um intern get_post_meta() aufzurufen. |
| label | nein | Dies ist das auf der Seite angezeigte Label |
| Klasse | nein | Dies ist der HTML-Code, der die öffnenden Tags für den Wrapper-Container definiert |
| Platzhalter | nein | Dies ist der Platzhaltertext, der angezeigt wird |
| Spalten | nein | Die Anzahl der Spalten, die das Textfeld haben wird |
| Zeilen | nein | Die Anzahl der Zeilen, die das Textfeld haben wird |
| wrapper_start | nein | Dies ist der HTML-Code, der die schließenden Tags für den Wrapper-Container definiert |
| wrapper_end | nein | Dies legt die CSS-Klasse fest und lässt einen Leerschritt zwischen den Klassen, um mehrere anzugeben |
| Stil | nein | Das 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 Name | Beispiel |
| Produkt | _wcv_custom_product_ | _wcv_custom_product_ingredients |
| Produkt | wcv_custom_product_ | wcv_custom_product_delivery_time |
| Einstellungen & Anmeldung | _wcv_custom_settings_ | _wcv_custom_settings_bankname |
| Einstellungen & Anmeldung | wcv_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 Name | Beispiel |
| Produkt | _wcv_custom_taxonomy_ | _wcv_custom_taxonomy_subjects |
| Produkt | wcv_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 |
| 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 ); |
| benutzerdefiniertes_feld | do_action( ‘wcv_form_custom_field_before_’. $field[ ‘id’ ], $field ); |
Aktionen danach
| Feld | Aktion |
| 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 ); |
| benutzerdefiniertes_feld | do_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');

