Pomocnik formularza

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.

UstawienieWymaganeOpis
post_idtakJest to identyfikator posta lub produktu, z którym chcesz się komunikować.
idtakJest to odpowiadający klucz meta lub pole bazy danych
wartośćnieJest to wartość z bazy danych, jeśli nie jest zdefiniowana, identyfikator jest używany do wewnętrznego wywołania get_post_meta( ).
etykietanieJest to etykieta wyświetlana na stronie
klasanieTo jest kod HTML definiujący tagi otwierające kontenera opakowującego
placeholdernieTo jest tekst zastępczy, który jest wyświetlany
wrapper_classnieTo jest klasa dla kontenera opakowującego
wrapper_startnieTo jest kod HTML definiujący tagi zamykające kontenera opakowującego
wrapper_endnieTo jest typ pola: tekst (domyślnie), ukryty, pole wyboru
cbvaluenieTo jest wartość pola wyboru, wymagana tylko jeśli zdefiniowano typ jako pole wyboru
typnieTo jest typ pola: tekst (domyślnie), ukryty, pole wyboru
show_labelniePozwala 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.

UstawienieWymaganeOpis
post_idtakJest to identyfikator posta lub produktu, z którym chcesz się komunikować.
idtakUstawia to klasę CSS, pozostaw spację między klasami, aby określić wiele
wartośćnieJest to wartość z bazy danych, jeśli nie jest zdefiniowana, identyfikator jest używany do wewnętrznego wywołania get_post_meta( ).
etykietanieJest to etykieta wyświetlana na stronie
klasanieTo jest kod HTML definiujący tagi otwierające kontenera opakowującego
placeholdernieTo jest tekst zastępczy, który jest wyświetlany
colsnieLiczba kolumn, które będzie miał obszar tekstowy
wierszenieLiczba wierszy, które będzie miał obszar tekstowy
wrapper_startnieTo jest kod HTML definiujący tagi zamykające kontenera opakowującego
wrapper_endnieUstawia to klasę CSS i pozostawia spację między klasami, aby określić wiele
stylnieTag 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 prefiksuPrzykład
Produkt_wcv_custom_product__wcv_custom_product_ingredients
Produktwcv_custom_product_wcv_custom_product_delivery_time
Ustawienia i rejestracja_wcv_custom_settings__wcv_custom_settings_bankname
Ustawienia i rejestracjawcv_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 prefiksuPrzykład
Produkt_wcv_custom_taxonomy__wcv_custom_taxonomy_subjects
Produktwcv_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
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 );

Akcje po

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


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');
Czy ten artykuł był pomocny?

Powiązane artykuły

Zakończ zakup