WC Vendors dispose d'une classe d'assistant de formulaire qui permet de générer le front-end à partir de champs définis. Ceux-ci sont utilisés sur tous les formulaires fournis par WC Vendors Pro. Il peut s'agir de métadonnées personnalisées ou de champs de métadonnées existants provenant de plugins tiers. Tous les champs de formulaire sont définis à l'aide d'un appel statique à la classe d'assistant de formulaire et en analysant un tableau d'options. Tout le code d'exemple pour faire fonctionner le champ sera fourni, y compris la définition du champ, la sauvegarde du champ et son affichage sur un formulaire pertinent.
Tous les formulaires front-end prennent en charge la capture et le stockage automatiques des champs de métadonnées personnalisés s'ils utilisent un préfixe prédéfini pour la clé de métadonnées pertinente pour le formulaire que vous souhaitez personnaliser. Sauf si vous avez une raison de définir vos clés de métadonnées nommées, il est fortement recommandé d'utiliser notre code intégré automatique pour enregistrer vos nouveaux champs de formulaire.
Champs pris en charge
Plusieurs champs différents sont pris en charge par l'assistant de formulaire, ce qui facilite la génération de champs de formulaire dans notre front-end. Tous les formulaires de WC Vendors Pro utilisent ce système pour afficher les champs de formulaire sur le front-end. Il y a quelques champs requis pour générer un champ, tout en fournissant des champs facultatifs qui offrent une flexibilité quant à ce qui est affiché.
Champs de l'assistant de formulaire
- Champ de saisie (texte, caché, case à cocher)
- Zone de texte
- Sélectionner
- Select2
- Sélection imbriquée
- Sélection de pays
- Bouton de soumission
- Téléchargeur de fichiers
Veuillez noter
Les définitions de code suivantes ne sont que des exemples, et vous devrez modifier les exemples de code pour refléter les valeurs dont vous avez besoin.
Champ de saisie
WCVendors_Pro_Form_Helper::input()
Ce type de champ est utilisé pour afficher un champ de texte standard, un champ de texte caché ou une case à cocher. Il n'y a que trois paramètres requis pour afficher le champ de saisie, tandis que les paramètres facultatifs vous offrent flexibilité et contrôle sur une gamme d'options différentes. Le tableau suivant décrit les divers attributs disponibles lors de la création d'un champ de saisie. Ceux-ci sont définis comme un tableau d'attributs, où l'attribut défini est la clé du tableau et la valeur est la sortie souhaitée.
| Paramètre | Requis | Description |
| post_id | oui | C'est l'identifiant du post ou du produit avec lequel vous souhaitez interagir. |
| id | oui | Ceci est la clé de métadonnées ou le champ de base de données correspondant |
| valeur | non | C'est la valeur de la base de données, si elle n'est pas définie, l'id est utilisé pour appeler get_post_meta( ) en interne |
| label | non | C'est le label affiché sur la page |
| classe | non | Ceci est le code HTML qui définit les balises d'ouverture pour le conteneur enveloppant |
| placeholder | non | Ceci est le texte de substitution qui est affiché |
| wrapper_class | non | Ceci est la classe pour le conteneur enveloppant |
| wrapper_start | non | Ceci est le code HTML qui définit les balises de fermeture pour le conteneur enveloppant |
| wrapper_end | non | Ceci est le type de champ : texte (par défaut), caché, case à cocher |
| cbvalue | non | Ceci est la valeur de la case à cocher, requise uniquement si vous avez défini le type comme case à cocher |
| type | non | Ceci est le type de champ : texte (par défaut), caché, case à cocher |
| show_label | non | Ceci vous permet d'afficher et de masquer l'étiquette pour l'entrée |
Champ de texte
Vous n'avez pas à spécifier l'attribut type dans les arguments, car c'est le type de champ par défaut. Le code suivant est un exemple de définition d'une entrée de texte, cela affiche le titre du produit que vous voyez sur tous nos formulaires de produit. Un champ de texte est le type d'entrée par défaut, c'est pourquoi vous n'avez pas à spécifier l'attribut de type pour celui-ci.
Exemple de champ de texte
WCVendors_Pro_Form_Helper::input( array( 'post_id' => $post_id, 'id' => 'post_title', 'label' => __( 'Product Name', 'wcvendors-pro' ), 'value' => $product_title, ) );
Champ caché
Les champs cachés sont utilisés dans les formulaires pour suivre et stocker des informations avec votre formulaire lorsque vous n'avez pas besoin d'une entrée de l'utilisateur. Il y a des moments où les intégrations avec des plugins tiers nécessiteront ce type de champ. Ce type de champ peut également être utilisé si vous souhaitez coder en dur une valeur pour vos vendeurs, telle que le prix ou les catégories.
Exemple de champ caché
WCVendors_Pro_Form_Helper::input( array( 'post_id' => $post_id, 'type' => 'hidden', 'id' => 'post_id', 'value' => $post_id ) );
Case à cocher
Les cases à cocher sont utilisées dans les différents formulaires. Pour définir une case à cocher, utilisez la définition suivante. En raison de la façon dont les cases à cocher sont générées, lorsque la case à cocher est décochée après avoir été précédemment cochée, une étape supplémentaire est nécessaire, qui nécessite de s'accrocher à l'action de sauvegarde de la page de paramètres ou de la sauvegarde du produit pour vérifier si la valeur n'est pas là pour la supprimer.
Exemple de champ de case à cocher
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');
Zone de texte
WCVendors_Pro_Form_Helper::textarea()
Le champ de zone de texte vous permet de créer des champs de zone de texte sur divers formulaires. Le tableau suivant décrit les différents attributs disponibles lors de la création d'un champ de zone de texte. Ceux-ci sont définis comme un tableau d'attributs, où l'attribut défini est la clé du tableau et la valeur est la sortie souhaitée.
| Paramètre | Requis | Description |
| post_id | oui | C'est l'identifiant du post ou du produit avec lequel vous souhaitez interagir. |
| id | oui | Cela définira la classe CSS, laissez un espace entre les classes pour en spécifier plusieurs |
| valeur | non | C'est la valeur de la base de données, si elle n'est pas définie, l'id est utilisé pour appeler get_post_meta( ) en interne |
| label | non | C'est le label affiché sur la page |
| classe | non | Ceci est le code HTML qui définit les balises d'ouverture pour le conteneur enveloppant |
| placeholder | non | Ceci est le texte de substitution qui est affiché |
| colonnes | non | Le nombre de colonnes que la zone de texte aura |
| lignes | non | Le nombre de lignes que la zone de texte aura |
| wrapper_start | non | Ceci est le code HTML qui définit les balises de fermeture pour le conteneur enveloppant |
| wrapper_end | non | Cela définira la classe CSS, et laissera un espace entre les classes pour en spécifier plusieurs |
| style | non | La balise style |
Exemple de champ zone de texte
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, ) ) );
Sélectionner
WCVendors_Pro_Form_Helper::select( )
Le champ de sélection vous permet de créer une simple liste déroulante tout en spécifiant les options ou la taxonomie à peupler automatiquement à partir du backend WordPress.
Exemple de champ de sélection
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()
Le champ select2 fournit une sélection améliorée qui offre plus d'utilisabilité et d'options pour sélectionner plusieurs valeurs. Ceci peut être utilisé pour définir vos propres options comme l'exemple de sélection ci-dessus, ou pour se connecter à une taxonomie définie comme dans l'exemple ci-dessous. Ceci utilise le populaire framework select2 pour y parvenir.
Exemple de champ 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' ), ) );
Téléchargeur de fichiers
WCVendors_Pro_Form_Helper::file_uploader()
L'assistant de formulaire fournit un téléchargeur de fichiers de base qui vous permet d'ajouter un seul fichier par entrée au formulaire. Ceci est utile si vous avez besoin d'ajouter des fichiers supplémentaires à un produit ou au magasin. Plusieurs formats de fichiers sont pris en charge
- Image
- Document
- Audio
- Vidéo
Les extensions de fichiers pour les formats de fichiers ci-dessus sont déterminées en fonction des types de fichiers que votre installation WordPress autorise. Si vous ne définissez pas le type de fichier pour le deuxième argument, le type de fichier par défaut est 'image'
Exemple de champ de téléchargement de fichier image
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'
);
}
Exemple de sortie de code
Exemple de champ de téléchargement de fichier document
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'
);
}
Exemple de sortie de code

Exemple de champ de téléchargement de fichier 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'
);
}
Exemple de sortie de code

Exemple de champ de téléchargement de fichier vidéo
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'
);
}
Exemple de sortie de code
Sauvegardes automatiques des champs
Pour profiter de notre fonctionnalité de sauvegarde automatique des champs, vous devrez définir vos clés méta personnalisées avec nos préfixes prédéfinis. Tous les préfixes commençant par un « _ » sont masqués du formulaire de modification dans le tableau de bord WordPress. Si vous avez besoin que le champ soit affiché dans le backend pour que les administrateurs puissent le modifier, laissez l'underscore du préfixe.
Qu'est-ce que cela signifie ? Cela signifie que si vous définissez votre champ de formulaire et que vous commencez l'identifiant avec le préfixe pertinent ci-dessous, le contrôleur de formulaire enregistrera automatiquement la clé méta.
Préfixes de types de champs disponibles
| Nom du formulaire | Nom du préfixe | Exemple |
| Produit | _wcv_custom_product_ | _wcv_custom_product_ingredients |
| Produit | wcv_custom_product_ | wcv_custom_product_delivery_time |
| Paramètres et inscription | _wcv_custom_settings_ | _wcv_custom_settings_bankname |
| Paramètres et inscription | wcv_custom_settings_ | wcv_custom_settings_bankname |
| Coupon | _wcv_coupon_post_meta_ | _wcv_coupon_post_meta_newfield |
Exemple de sauvegarde automatique de champ de produit
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' ), ) );
Exemple de sauvegarde automatique de champ de formulaire Paramètres et inscription
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'),
) )
);
}
Cela fonctionne pour tout type de champ qui n'est pas une sélection multiple.
Sauvegardes de taxonomie
Si vous avez défini une taxonomie personnalisée, nous prenons en charge la sauvegarde automatique de celles-ci. Tout ce que vous avez à faire est de définir l'ID du champ avec le même format que les champs individuels. Le nom de la taxonomie sera toujours celui que vous avez défini lors de l'enregistrement de la taxonomie. Vous n'avez besoin d'utiliser ces préfixes que pour les noms de champs sur le formulaire.
| Nom du formulaire | Nom du préfixe | Exemple |
| Produit | _wcv_custom_taxonomy_ | _wcv_custom_taxonomy_subjects |
| Produit | wcv_custom_taxonomy_ | wcv_custom_taxonomy_subjects |
Exemple de sauvegarde automatique de taxonomie de produit
Ce qui suit est un exemple de taxonomie définie par l'utilisateur.
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' ),
)
);
Actions
Chaque entrée de formulaire a une action _before_ et _after_ qui vous permet de vous connecter au formulaire avant ou après le rendu de l'élément. Tous les types de formulaires définis ci-dessus fournissent cet accès. L'ID du champ est ajouté à la fin des actions afin que vous puissiez cibler des champs spécifiques définis.
Actions avant
| Champ | Action |
| input | do_action( ‘wcv_form_input_before_’. $field[ ‘id’ ], $field ); |
| sélectionner | 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 ); |
| soumettre | 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 ); |
Actions Après
| Champ | Action |
| input | do_action( ‘wcv_form_input_after_’. $field[ ‘id’ ], $field ); |
| sélectionner | 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 ); = |
| soumettre | 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 ); |
Exemple
Si vous connaissez l’ID du champ, vous pouvez vous connecter à l’action. Par exemple, l’ID du champ Titre de l’article est post_title, par conséquent les actions avant et après seraient les suivantes. Vous définiriez alors les informations à afficher avant ou après, avec les fonctions analysées.
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');

