WC Vendors posiada klasę pomocnika formularzy, która pozwala na generowanie frontendu z zdefiniowanych pól. Są one używane we wszystkich formularzach dostarczanych przez WC Vendors Pro. Mogą to być niestandardowe pola meta lub istniejące pola meta z wtyczek firm trzecich. Wszystkie pola formularzy są definiowane za pomocą statycznego wywołania klasy pomocnika formularzy i parsowania tablicy opcji. Cały przykładowy kod umożliwiający działanie pola zostanie dostarczony, w tym definicja pola, zapis pola i jego wyświetlanie w odpowiednim formularzu.
Wszystkie formularze front-endowe obsługują automatyczne przechwytywanie i przechowywanie niestandardowych pól meta, jeśli używają predefiniowanego prefiksu dla klucza meta związanego z formularzem, który chcesz dostosować. Chyba że masz powód, aby zdefiniować własne nazwane klucze meta, zdecydowanie zalecamy użycie naszego zautomatyzowanego zintegrowanego kodu do zapisywania nowych pól formularza.
Obsługiwane pola
Istnieje kilka różnych obsługiwanych pól za pomocą pomocnika formularzy, co ułatwia generowanie pól formularzy w naszym frontendzie. Wszystkie formularze w WC Vendors Pro używają tego systemu do wyświetlania pól formularzy na frontendzie. Istnieje kilka wymaganych pól do wygenerowania pola, podczas gdy opcjonalne pola zapewniają elastyczność w zakresie tego, co jest wyświetlane.
Pola pomocnika formularzy
- Pole ( tekstowe, ukryte, checkbox )
- Obszar tekstowy
- Wybór
- Select2
- Zagnieżdżony wybór
- Wybór kraju
- Przycisk wysyłania
- Przesyłanie plików
Uwaga
Poniższe definicje kodu są jedynie przykładami i musiałbyś zmienić przykłady kodu, aby odzwierciedlić wymagane wartości.
Pole wejściowe
WCVendors_Pro_Form_Helper::input()
Ten typ pola służy do wyświetlania standardowego pola tekstowego, ukrytego pola tekstowego lub pola wyboru. Istnieją tylko trzy ustawienia wymagane do wyświetlenia pola wejściowego, podczas gdy opcjonalne ustawienia dają elastyczność i kontrolę nad szeregiem różnych opcji. Poniższa tabela przedstawia różne atrybuty dostępne podczas tworzenia pola wejściowego. Są one definiowane jako tablica atrybutów, gdzie zdefiniowany atrybut jest kluczem tablicy, a wartość jest pożądanym wyjściem.
| Ustawienie | Wymagane | Opis |
| post_id | tak | Jest to identyfikator posta lub produktu, z którym chcesz się komunikować. |
| id | tak | Jest to odpowiadający klucz meta lub pole bazy danych |
| wartość | nie | Jest to wartość z bazy danych, jeśli nie jest zdefiniowana, identyfikator jest używany do wewnętrznego wywołania get_post_meta( ). |
| etykieta | nie | Jest to etykieta wyświetlana na stronie |
| klasa | nie | To jest kod HTML definiujący tagi otwierające kontenera opakowującego |
| placeholder | nie | To jest tekst zastępczy, który jest wyświetlany |
| wrapper_class | nie | To jest klasa dla kontenera opakowującego |
| wrapper_start | nie | To jest kod HTML definiujący tagi zamykające kontenera opakowującego |
| wrapper_end | nie | To jest typ pola: tekst (domyślnie), ukryty, pole wyboru |
| cbvalue | nie | To jest wartość pola wyboru, wymagana tylko jeśli zdefiniowano typ jako pole wyboru |
| typ | nie | To jest typ pola: tekst (domyślnie), ukryty, pole wyboru |
| show_label | nie | Pozwala to na pokazywanie i ukrywanie etykiety dla pola |
Pole tekstowe
Nie musisz określać atrybutu type w argumentach, ponieważ jest to domyślny typ pola. Poniższy kod jest przykładem zdefiniowania pola tekstowego, które wyświetla tytuł produktu, który widzisz na wszystkich naszych formularzach produktowych. Pole tekstowe jest domyślnym typem pola, dlatego nie musisz określać atrybutu type dla tego.
Przykład pola tekstowego
WCVendors_Pro_Form_Helper::input( array( 'post_id' => $post_id, 'id' => 'post_title', 'label' => __( 'Product Name', 'wcvendors-pro' ), 'value' => $product_title, ) );
Pole ukryte
Pola ukryte są używane w formularzach do śledzenia i przechowywania informacji wraz z formularzem, gdy nie wymagany jest wkład użytkownika. Istnieją przypadki, gdy integracje z wtyczkami stron trzecich będą wymagać tego typu pola. Ten typ pola może być również używany, jeśli chcesz zakodować na stałe wartość dla swoich sprzedawców, taką jak cena lub kategorie.
Przykład pola ukrytego
WCVendors_Pro_Form_Helper::input( array( 'post_id' => $post_id, 'type' => 'hidden', 'id' => 'post_id', 'value' => $post_id ) );
Pole wyboru
Pola wyboru są używane w różnych formularzach. Aby zdefiniować pole wyboru, użyj następującej definicji. Ze względu na sposób generowania pól wyboru, gdy pole wyboru jest odznaczone po wcześniejszym zaznaczeniu, potrzebny jest dodatkowy krok, który wymaga podłączenia się do akcji zapisu strony ustawień lub zapisu produktu, aby sprawdzić, czy wartość nie istnieje, aby ją usunąć.
Przykład pola wyboru
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');
Obszar tekstowy
WCVendors_Pro_Form_Helper::textarea()
Pole obszaru tekstowego pozwala na tworzenie pól obszaru tekstowego w różnych formularzach. Poniższa tabela przedstawia różne atrybuty dostępne podczas tworzenia pola obszaru tekstowego. Są one definiowane jako tablica atrybutów, gdzie zdefiniowany atrybut jest kluczem tablicy, a wartość jest pożądanym wynikiem.
| Ustawienie | Wymagane | Opis |
| post_id | tak | Jest to identyfikator posta lub produktu, z którym chcesz się komunikować. |
| id | tak | Ustawia to klasę CSS, pozostaw spację między klasami, aby określić wiele |
| wartość | nie | Jest to wartość z bazy danych, jeśli nie jest zdefiniowana, identyfikator jest używany do wewnętrznego wywołania get_post_meta( ). |
| etykieta | nie | Jest to etykieta wyświetlana na stronie |
| klasa | nie | To jest kod HTML definiujący tagi otwierające kontenera opakowującego |
| placeholder | nie | To jest tekst zastępczy, który jest wyświetlany |
| cols | nie | Liczba kolumn, które będzie miał obszar tekstowy |
| wiersze | nie | Liczba wierszy, które będzie miał obszar tekstowy |
| wrapper_start | nie | To jest kod HTML definiujący tagi zamykające kontenera opakowującego |
| wrapper_end | nie | Ustawia to klasę CSS i pozostawia spację między klasami, aby określić wiele |
| styl | nie | Tag stylu |
Przykład pola tekstowego
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, ) ) );
Wybór
WCVendors_Pro_Form_Helper::select( )
Pole wyboru pozwala na stworzenie prostego menu rozwijanego, określając opcje lub taksonomię do automatycznego wypełniania z zaplecza WordPress.
Przykład pola wyboru
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()
Pole select2 zapewnia ulepszone pole wyboru, które oferuje większą użyteczność i opcje wyboru wielu wartości. Może być używane do definiowania własnych opcji, takich jak powyższy przykład pola wyboru, lub do podłączenia się do zdefiniowanej taksonomii, zgodnie z poniższym przykładem. Wykorzystuje popularny framework select2 do osiągnięcia tego celu.
Przykład pola 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' ), ) );
Przesyłanie plików
WCVendors_Pro_Form_Helper::file_uploader()
Pomocnik formularza zapewnia podstawowy mechanizm przesyłania plików, który pozwala na dodanie jednego pliku na pole do formularza. Jest to przydatne, jeśli potrzebujesz dodatkowych plików dodanych do produktu lub sklepu. Obsługiwanych jest kilka formatów plików
- Obraz
- Dokument
- Dźwięk
- Wideo
Rozszerzenia plików dla powyższych formatów plików są określane na podstawie tego, jakie typy plików zezwala Twoja instalacja WordPress. Jeśli nie zdefiniujesz typu pliku dla drugiego argumentu, domyślnym typem pliku jest „obraz”
Przykład pola przesyłania plików graficznych
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'
);
}
Przykład wyjścia kodu
Przykład pola przesyłania plików dokumentów
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'
);
}
Przykład wyjścia kodu

Przykład pola przesyłania plików 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'
);
}
Przykład wyjścia kodu

Przykład pola przesyłania plików wideo
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'
);
}
Przykład wyjścia kodu
Automatyczne zapisywanie pól
Aby skorzystać z naszej funkcji automatycznego zapisywania pól, musisz zdefiniować własne klucze meta za pomocą naszych predefiniowanych prefiksów. Wszystkie prefiksy zaczynające się od „_” są ukryte w formularzu edycji w panelu administracyjnym WordPress. Jeśli potrzebujesz, aby pole było wyświetlane w panelu administracyjnym do edycji przez administratorów, usuń podkreślenie z prefiksu.
Co to oznacza? Oznacza to, że jeśli zdefiniujesz pole formularza i zaczniesz identyfikator od odpowiedniego poniżej prefiksu, kontroler formularza automatycznie zapisze klucz meta.
Dostępne prefiksy typów pól
| Nazwa formularza | Nazwa prefiksu | Przykład |
| Produkt | _wcv_custom_product_ | _wcv_custom_product_ingredients |
| Produkt | wcv_custom_product_ | wcv_custom_product_delivery_time |
| Ustawienia i rejestracja | _wcv_custom_settings_ | _wcv_custom_settings_bankname |
| Ustawienia i rejestracja | wcv_custom_settings_ | wcv_custom_settings_bankname |
| Kupon | _wcv_coupon_post_meta_ | _wcv_coupon_post_meta_newfield |
Przykład automatycznego zapisywania pola produktu
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' ), ) );
Przykład automatycznego zapisywania pola formularza Ustawienia i rejestracja
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'),
) )
);
}
Działa to dla każdego typu pola, które nie jest polem wielokrotnego wyboru.
Zapisywanie taksonomii
Jeśli zdefiniowałeś niestandardową taksonomię, wspieramy jej automatyczne zapisywanie. Wszystko, co musisz zrobić, to zdefiniować identyfikator pola w tym samym formacie co poszczególne pola. Nazwa taksonomii będzie nadal taka, jaką zdefiniowałeś podczas rejestracji taksonomii. Musisz używać tych prefiksów tylko dla nazw pól w formularzu.
| Nazwa formularza | Nazwa prefiksu | Przykład |
| Produkt | _wcv_custom_taxonomy_ | _wcv_custom_taxonomy_subjects |
| Produkt | wcv_custom_taxonomy_ | wcv_custom_taxonomy_subjects |
Przykład automatycznego zapisywania taksonomii produktu
Poniżej znajduje się przykład niestandardowo zdefiniowanej taksonomii.
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' ),
)
);
Akcje
Każde pole wejściowe formularza ma akcję _before_ i _after_, która pozwala na podłączenie się do formularza przed lub po wyrenderowaniu elementu. Wszystkie typy formularzy zdefiniowane powyżej zapewniają ten dostęp. Identyfikator pola jest dodawany na końcu akcji, dzięki czemu można kierować konkretne zdefiniowane pola.
Akcje przed
| Pole | Akcja |
| 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 ); |
Akcje po
| Pole | Akcja |
| 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 ); |
Przykład
Jeśli znasz identyfikator pola, możesz podłączyć się do akcji. Na przykład identyfikatorem pola Tytuł posta jest post_title, dlatego akcje przed i po będą następujące. Następnie zdefiniujesz informacje do wyświetlenia przed lub po, za pomocą przetworzonych funkcji.
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');

