1. Accueil
  2. Base de connaissances
  3. WooCommerce Wholesale Prices Premium
  4. API
  5. Comment personnaliser Wholesale Suite avec des hooks et des filtres

Comment personnaliser Wholesale Suite avec des hooks et des filtres

Les plugins Wholesale Suite exposent des hooks et des filtres PHP. Vous pouvez les utiliser pour modifier les prix, les formulaires, les e-mails, les devis et le comportement de paiement sans modifier les fichiers du plugin. Cet article vous montre comment ajouter votre propre code à un hook, et répertorie les hooks destinés à être utilisés dans votre propre code, avec leurs arguments et ce qu'ils modifient. Il s'agit d'une sélection, pas de tous les hooks que les plugins déclenchent.

Chaque tableau répertorie le nom du hook, son type, ses arguments et ce qu'il modifie. Un filtre doit retourner une valeur. Une action ne retourne pas de valeur.

Ajouter votre code à un hook

  1. Choisissez où ajouter votre code : le fichier functions.php d'un thème enfant, ou un plugin d'extraits de code.
  2. Trouvez le hook dont vous avez besoin dans les tableaux de plugins ci-dessous. Notez son type et ses arguments.
  3. Ajoutez votre extrait avec add_filter() pour un filtre ou add_action() pour une action. Les exemples dans les sections de plugins montrent le modèle.
  4. Enregistrez le fichier.
  5. Testez la modification sur un site de staging avant de l'ajouter à votre boutique en ligne.

Ne modifiez pas les fichiers du plugin. Une mise à jour du plugin les remplace et supprime votre modification.

Les hooks d'un plugin Wholesale Suite ne s'exécutent que lorsque ce plugin est actif. Par exemple, les hooks de WooCommerce Wholesale Prices Premium nécessitent WooCommerce Wholesale Prices Premium sur votre site.

Les détails des hooks dans cet article correspondent aux versions de plugins suivantes : WooCommerce Wholesale Prices 2.3.1, WooCommerce Wholesale Prices Premium 2.1.5, WooCommerce Wholesale Order Form 3.1.3, WooCommerce Wholesale Lead Capture 2.0.7, WooCommerce Wholesale Quotes 1.0.3, WooCommerce Wholesale Payments 1.0.8, et Invoice Gateway for WooCommerce 1.1.7.

WooCommerce Wholesale Prices

WooCommerce Wholesale Prices ajoute des hooks autour des champs de prix de gros dans le panneau de modification rapide de WooCommerce. Il dispose également d'un filtre pour désactiver les capacités d'IA de Wholesale Suite. Pour en savoir plus sur les capacités, consultez Comment utiliser les capacités d'IA dans Wholesale Suite.

HookTypeArgumentsCe qu'il modifie
wwp_before_quick_edit_wholesale_price_fieldsAction$all_wholesale_roles (tableau, rôles de gros enregistrés)S'exécute dans le panneau de modification rapide, avant les champs de prix de gros. Utilisez-le pour imprimer votre propre balisage. Il ne s'exécute pas lorsque le filtre wwp_product_editor_show_wholesale_prices_fields retourne false.
wwp_after_quick_edit_wholesale_price_fieldsAction$all_wholesale_roles (tableau, rôles de gros enregistrés)S'exécute dans le panneau de modification rapide, après les champs de prix de gros. Il suit la même règle que le hook précédent.
wwp_quick_edit_allowed_product_typesFiltre$allowed_product_types (tableau, par défaut simple et external)
$context (chaîne, wholesale_price_fields)
Définit quels types de produits affichent et enregistrent les champs de prix de gros en modification rapide. Il définit également quels produits reçoivent les données de prix de gros dans la liste des produits.
wwp_product_editor_show_wholesale_prices_fieldsFiltre$show (bool, par défaut true)Retournez false pour masquer les champs de prix de gros dans l'éditeur de produit et dans la modification rapide.
wwp_disable_abilitiesFiltre$disabled (bool, défaut false)Retournez true pour désactiver les fonctionnalités d'IA de Wholesale Suite. Cela désactive également les fonctionnalités des autres plugins Wholesale Suite, car ils s'enregistrent via WooCommerce Wholesale Prices.

Exemple : ajouter une note sous les champs de prix de gros

Cet exemple affiche une courte note après les champs de prix de gros dans la modification rapide.

add_action( 'wwp_after_quick_edit_wholesale_price_fields', function ( $all_wholesale_roles ) {
	echo '<p>' . esc_html__( 'Enter prices without tax.', 'your-text-domain' ) . '</p>';
} );

WooCommerce Wholesale Prices Premium

WooCommerce Wholesale Prices Premium dispose de hooks pour les remises sur quantité, les remises sur panier, les vérifications de commande minimum, les rapports et l'API REST. Tous les hooks de cette section nécessitent WooCommerce Wholesale Prices Premium.

HookTypeArgumentsCe qu'il modifie
wwpp_quantity_based_discount_base_priceFiltre$base_price (float|string, le prix à partir duquel les paliers de quantité fonctionnent)
$mapping (array, règles de remise par quantité)
$raw_wholesale_price (float|string)
$product (WC_Product)
$wholesale_role (array)
Modifie le prix de base auquel s'appliquent les paliers de remise basés sur la quantité. La base est le prix de vente de gros actif s'il y en a un, sinon le prix de gros. Lorsque le paramètre du magasin qui utilise le prix régulier pour le calcul des remises est activé, la base est le prix régulier.
wwpp_cart_subtotal_discount_eligible_itemFiltre$is_eligible (bool, défaut true)
$cart_item (array, données de l'article du panier)
$wholesale_role (array)
Décide si un article du panier compte pour le sous-total utilisé pour la remise sur le sous-total du panier. Retournez false pour exclure l'article.
wwpp_min_order_requirement_checkFiltre$apply (bool, le résultat de la vérification)
$cart_total (float, total du panier de gros)
$cart_items (float, quantité totale d'articles)
$cart (WC_Cart)
$wholesale_role (array)
Modifie le résultat de la vérification de commande minimum pour les remises sur panier. La remise sur le sous-total du panier ne s'applique que lorsque le résultat est exactement true.
wwpp_add_wholesale_role_general_discount_mappingActionAucuneS'exécute après qu'une remise générale est enregistrée pour un rôle de gros.
wwpp_edit_wholesale_role_general_discount_mappingActionAucuneS'exécute après que la remise générale d'un rôle de gros est mise à jour.
wwpp_process_category_products_in_apiFiltre$products_in_api (bool, défaut false)
$category_id (int, l'ID du terme de catégorie)
Définit quel code met à jour les indicateurs de prix de gros des produits d'une catégorie. Lorsqu'il renvoie true, l'API REST de remise de catégorie effectue la mise à jour et l'écran de modification de catégorie l'ignore.
wwpp_meta_dataFiltre$meta_data (array, données de gros, valeurs vides supprimées)
$product (WC_Product)
$request (WP_REST_Request)
Modifie les données de gros que l'API REST des produits de gros renvoie pour un produit.
wwpp_api_update_wholesale_roles_filterFiltre$wholesale_roles (array, tous les rôles enregistrés)
$request (WP_REST_Request)
Modifie la liste des rôles de vente en gros avant que l'API REST ne l'enregistre. Elle s'exécute lorsqu'un rôle est créé ou mis à jour via l'API.
wwpp_reports_sales_transient_expiration_constantFiltre$expiration (int, secondes, par défaut HOUR_IN_SECONDS)Définit la durée de mise en cache de la réponse du rapport des ventes.
wwpp_disable_abilitiesFiltre$disabled (bool, défaut false)Retourne vrai pour désactiver les fonctionnalités que ce plugin enregistre.

Exemple : exclure une catégorie de produit de la remise sur le sous-total du panier

Cet exemple exclut les articles de la catégorie gift-cards du sous-total utilisé par la remise sur le sous-total du panier.

add_filter( 'wwpp_cart_subtotal_discount_eligible_item', function ( $is_eligible, $cart_item, $wholesale_role ) {
	if ( has_term( 'gift-cards', 'product_cat', $cart_item['product_id'] ) ) {
		return false;
	}
	return $is_eligible;
}, 10, 3 );

WooCommerce Wholesale Order Form

WooCommerce Wholesale Order Form dispose de hooks pour les requêtes REST du formulaire de commande, la recherche de produits, le chargement des variations et les scripts du formulaire.

HookTypeArgumentsCe qu'il modifie
wwof_rest_read_permissionsFiltre$permission (bool, le résultat des règles du formulaire de commande)
$object_id (int|string, l'ID de l'objet, ou 0 pour une collection)
$post_type (string, type de publication ou taxonomie)
Accorde ou refuse une lecture REST que les règles du formulaire de commande ont refusée. Elle ne s'exécute que pour les lectures en contexte de visualisation sur les routes utilisées par le formulaire de commande. Une valeur vraie n'atteint jamais un objet qui n'est pas publié.
wwof_wc_rest_prepare_product_objectFiltre$response (WP_REST_Response)
$wc_data (WC_Product)
$request (WP_REST_Request)
$wc (WC, l'objet d'intégration WooCommerce du formulaire de commande)
Modifie les données du produit que la requête REST du formulaire de commande renvoie pour un produit.
wwof_product_type_termsFiltre$product_type_terms (array, slugs de type de produit)Définit les types de produits que le formulaire de commande liste. La valeur par défaut est simple, grouped et external lorsque les variations s'affichent individuellement. Sinon, elle inclut également variable. Ajoutez un type, tel que bundle, pour le lister.
wwof_search_post_clauses_requestFiltre$clauses (array, clauses SQL)
$wc (WC, l'objet d'intégration WooCommerce du formulaire de commande)
Modifie les clauses SQL de la recherche de produits dans le formulaire de commande.
wwof_force_load_form_postsFiltre$form_posts (array, vide par défaut)Force le chargement du script du formulaire de commande sur une page. Retourne un tableau d'objets de formulaire de commande indexés par ID de formulaire lorsque le shortcode n'est pas détecté.
wwof_login_urlFiltre$login_url (string)Modifie l'URL de connexion utilisée par le script du formulaire de commande.
wwof_min_requirement_current_user_idFiltre$user_id (int, l'ID de l'utilisateur actuel par défaut)Modifie l'ID de l'utilisateur utilisé par le formulaire de commande pour rechercher les exigences de commande minimale.
wwof_required_pluginsFiltre$required_plugins (tableau, chemins de fichiers des plugins)Modifie la liste des plugins qui doivent être actifs. Le formulaire de commande signale chaque plugin listé qui n'est pas actif.
wwof_after_register_order_form_post_typeAction$post_type (chaîne, nom du type de publication du formulaire de commande)S'exécute après l'enregistrement du type de publication du formulaire de commande.
wwof_variations_max_requestsFiltre$variations_max_requests (entier, par défaut 12)Définit le nombre de requêtes de liste de variations que le formulaire de commande envoie en même temps. La valeur la plus basse est 1.
wwof_variations_response_cache_bypassFiltre$bypass (booléen, par défaut false)
$request (WP_REST_Request)
$user_id (entier, 0 pour les invités)
Retourne true pour ignorer le cache de réponse des variations pour une requête. Utilisez-le lorsqu'un autre plugin définit les prix par utilisateur ou par session.
wwof_variations_response_cache_ttlFiltre$ttl (entier, secondes, par défaut 5 minutes)
$request (WP_REST_Request)
$product_id (entier, ID du produit parent)
Définit la durée pendant laquelle une réponse de variations reste en cache.
wwof_disable_abilitiesFiltre$disable (booléen, par défaut false)Retourne vrai pour désactiver les fonctionnalités que ce plugin enregistre.

Exemple : raccourcir le cache des variations

Cet exemple conserve les réponses de variations mises en cache pendant une minute.

add_filter( 'wwof_variations_response_cache_ttl', function ( $ttl, $request, $product_id ) {
	return MINUTE_IN_SECONDS;
}, 10, 3 );

Commande WP-CLI : migrer les formulaires de commande

Exécutez cette commande pour migrer les formulaires de commande du format version 2 au format version 3. La commande enregistre une copie des anciens paramètres de chaque formulaire dans la méta de publication _settings avant de migrer le formulaire.

wp wwof migrate_forms_settings

Pour migrer uniquement certains formulaires, ajoutez un ou plusieurs ID de formulaire de commande après le nom de la commande :

wp wwof migrate_forms_settings 123 456

Sans ID, la commande migre tous les formulaires version 2. Si elle ne trouve aucun formulaire, elle affiche l'erreur Aucun formulaire trouvé.

Le plugin dispose également de deux autres commandes WP-CLI. Utilisez wp wwof export_order_forms [<format>] pour exporter les formulaires au format json ou yml. Utilisez wp wwof import_v2_forms_from_json_file <json_file_path> pour importer des formulaires version 2 à partir d'un fichier JSON.

WooCommerce Wholesale Lead Capture

WooCommerce Wholesale Lead Capture possède des hooks pour le cycle de vie des prospects, le formulaire d'inscription, les redirections de connexion, les e-mails et l'API REST des prospects. Chaque action de prospect passe un objet WP_User.

HookTypeArgumentsCe qu'il modifie
wwlc_action_before_approve_userAction$user (WP_User)S'exécute avant que WooCommerce Wholesale Lead Capture n'approuve un prospect.
wwlc_action_after_approve_userAction$user (WP_User)S'exécute après l'approbation du prospect et l'envoi de l'e-mail d'approbation.
wwlc_action_before_reject_userAction$user (WP_User)S'exécute avant qu'un prospect ne soit rejeté. Ne s'exécute pas pour un prospect déjà rejeté.
wwlc_action_after_reject_userAction$user (WP_User)S'exécute après qu'un prospect a été rejeté. Le prospect reçoit le rôle Rejeté, ou le compte est supprimé lorsque les paramètres l'indiquent.
wwlc_action_before_activate_userAction$user (WP_User)S'exécute avant que le compte d'un prospect ne soit activé.
wwlc_action_after_activate_userAction$user (WP_User)S'exécute après que le compte d'un prospect a été marqué comme actif.
wwlc_action_before_deactivate_userAction$user (WP_User, les rôles avant le changement)S'exécute avant que le compte d'un prospect ne soit désactivé. S'exécute également lorsque l'API REST des prospects désactive un prospect.
wwlc_action_after_deactivate_userAction$user (WP_User)S'exécute après la désactivation du compte d'un prospect. L'utilisateur reçoit le rôle de client et est déconnecté de toutes les sessions.
wwlc_action_after_create_wholesale_leadAction$new_lead (WP_User)S'exécute après l'inscription d'un prospect, et après le traitement de l'approbation automatique. S'exécute également lorsqu'un client existant passe à un compte de vente en gros.
wwlc_stop_registeringFiltre$stop (bool, par défaut false)
$user_data (tableau, les données du formulaire soumises)
Retourne true pour arrêter l'inscription. Le formulaire affiche l'erreur « Vous n'êtes pas autorisé à vous inscrire ».
wwlc_login_redirect_urlFiltre$redirect_url (chaîne)
$user (WP_User)
Modifie l'URL vers laquelle un utilisateur est redirigé après la connexion sur le formulaire de connexion de vente en gros. S'applique également à une connexion WooCommerce (par exemple, Mon Compte) lorsqu'un utilisateur a un rôle de vente en gros.
wwlc_registration_form_fieldsFiltre$form_fields (tableau, champs par défaut, personnalisés et reCAPTCHA, triés par ordre)Modifie les champs affichés par le formulaire d'inscription.
wwlc_filter_{field}_field_form_labelFiltre$label (chaîne, le libellé par défaut traduit)Modifie le libellé d'un champ d'inscription par défaut. Remplacez {field} par l'un des éléments suivants : first_name, last_name, phone, email, company, country, address1, address2, city, state, postcode, password. Par exemple, wwlc_filter_first_name_field_form_label.
wwlc_email_format_stringFiltre$text (chaîne, contenu de l'e-mail après remplacement des espaces réservés)
$wc_email (WC_Email)
Modifie le texte d'un e-mail de WooCommerce Wholesale Lead Capture après le remplacement des espaces réservés.
wwlc_default_email_lead_roleFiltre$role (string, par défaut wholesale_customer)Définit le rôle utilisé pour sélectionner le prospect d'exemple pour les objets d'e-mail. Le rôle défini dans le paramètre de rôle du prospect le remplace lorsque ce paramètre n'est pas vide.
wwlc_rest_api_routesFiltre$routes (tableau, définitions de routes)Ajoute ou modifie les routes de l'API REST des prospects dans l'espace de noms wwlc/v1. Chaque route est indexée sous leads/<route>.
wwlc_disable_abilitiesFiltre$disabled (bool, défaut false)Retourne true pour désactiver les fonctionnalités que ce plugin enregistre. La constante WWLC_DISABLE_ABILITIES fait de même.

Exemple : exécuter du code lorsque vous approuvez un prospect

Cet exemple enregistre un indicateur sur l'utilisateur après l'approbation. Un script de synchronisation peut lire l'indicateur plus tard.

add_action( 'wwlc_action_after_approve_user', function ( $user ) {
	update_user_meta( $user->ID, 'needs_crm_sync', 'yes' );
} );

WooCommerce Wholesale Quotes

WooCommerce Wholesale Quotes propose des filtres pour les données de devis, l'étiquette du bouton de devis, les options du front-end et les autorisations de l'API REST.

HookTypeArgumentsCe qu'il modifie
wholesale_quotes_api_admin_permissions_checkFiltre$response (true|WP_Error, true si l'utilisateur a manage_woocommerce)
$request (WP_REST_Request)
Modifie la vérification des autorisations des routes REST de l'administrateur. Retourne true pour autoriser la requête, ou une WP_Error pour la refuser.
wholesale_quotes_quote_items_dataFiltre$data (tableau, objets d'articles de devis)Modifie la liste des articles de devis avant que le plugin ne l'utilise. S'applique aux articles d'un devis et à la liste des articles de devis.
wholesale_quotes_quote_item_product_dataFiltre$product (tableau, données du produit de l'article de devis)
$item_product_id (int)
Modifie les données du produit d'un article de devis. Les données incluent l'image, le lien, le statut du stock et le type de produit.
wws_wq_quote_button_shop_labelFiltre$label (string, par défaut, l'étiquette dans les paramètres de devis)Modifie l'étiquette du bouton de devis sur les pages de la boutique.
wws_wq_guest_quote_products_dataFiltre$products (tableau, objets d'articles de devis)
$product_data (tableau, les données du produit de la requête)
Modifie les produits que la route REST des devis invités retourne.
wholesale_quotes_optionsFiltre$options (tableau, options du front-end)Modifie le tableau d'options utilisé par le front-end de devis. Il contient des clés telles que title, description et quoteUrl.
wwq_disable_abilitiesFiltre$disabled (bool, défaut false)Retourne vrai pour désactiver les fonctionnalités que ce plugin enregistre.

Exemple : changer l'étiquette du bouton de devis

Cet exemple change l'étiquette du bouton de devis sur les pages de boutique.

add_filter( 'wws_wq_quote_button_shop_label', function ( $label ) {
	return __( 'Request pricing', 'your-text-domain' );
} );

WooCommerce Wholesale Payments

WooCommerce Wholesale Payments dispose de filtres pour la planification des factures, le plan de paiement et les requêtes de commande, la version de l'API Stripe et les modèles d'e-mails de rappel.

HookTypeArgumentsCe qu'il modifie
wpay_filter_cron_scheduleFiltre$cron_schedule (chaîne, par défaut est la planification enregistrée, daily si aucune)Définit l'intervalle de l'action de facturation récurrente. Le plugin ne la lit que lorsqu'il crée cette action, il ne change donc pas une planification existante. Utilisez daily, hourly, ou 15min. Toute autre valeur s'exécute quotidiennement.
wpay_get_payment_plansFiltre$args (tableau, arguments WP_Query)Modifie les arguments de requête qui chargent les plans de paiement. Le plugin définit le type de publication après l'exécution du filtre.
wpay_get_payment_ordersFiltre$args (tableau, arguments wc_get_orders())Modifie les arguments de requête qui chargent les commandes de paiement. Le plugin limite la taille de la page après l'exécution du filtre.
wpay_stripe_api_versionFiltre$version (chaîne, la version de l'API Stripe utilisée par le plugin)Modifie la version de l'API Stripe dans l'en-tête de la requête. Il définit également la version lorsque le plugin crée un webhook Stripe.
wpay_payment_due_today_email_template_htmlFiltre$template (chaîne, par défaut payment-due-today.php)Modifie le fichier modèle HTML de l'e-mail de paiement dû aujourd'hui.
wpay_payment_due_today_email_template_plainFiltre$template (chaîne, par défaut payment-due-today.php)Modifie le fichier modèle texte brut de l'e-mail de paiement dû aujourd'hui.
wpay_payment_overdue_email_template_htmlFiltre$template (chaîne, par défaut payment-overdue.php)Modifie le fichier modèle HTML de l'e-mail de paiement en retard.
wpay_payment_overdue_email_template_plainFiltre$template (chaîne, par défaut payment-overdue.php)Modifie le fichier modèle texte brut de l'e-mail de paiement en retard.
wpay_disable_abilitiesFiltre$disabled (bool, défaut false)Retourne vrai pour désactiver les fonctionnalités que ce plugin enregistre.

Passerelle de facturation pour WooCommerce

Passerelle de facturation pour WooCommerce dispose de hooks pour la date d'échéance de la facture, le statut de la commande, les commandes gratuites et les factures en retard.

HookTypeArgumentsCe qu'il modifie
igfw_invoice_due_dateFiltre$due (int, horodatage Unix)
$order (WC_Order)
Modifie la date d'échéance d'une commande de facture. La valeur par défaut est la date de commande plus les conditions de paiement en jours. Une valeur de 0 ou moins est ignorée.
igfw_invoice_gateway_default_order_statusFiltre$status (string, par défaut le statut de commande enregistré, en attente s'il n'y en a pas)Modifie le statut que la passerelle attribue à une commande lors du paiement.
igfw_show_invoice_gateway_on_free_ordersFiltre$show (bool, par défaut true)Retourne false pour masquer la passerelle de facture lorsque le total du panier est zéro.
igfw_invoice_gateway_constructActionAucuneS'exécute à la fin du constructeur de la passerelle de facture.
igfw_invoice_payment_overdueAction$order (WC_Order, la commande en retard)S'exécute lorsque le plugin trouve une commande de facture en retard, après l'envoi de l'e-mail de retard à l'administrateur de la boutique. Le plugin ne débite pas la commande. Utilisez ce hook pour démarrer votre propre processus.

Exemple : ajouter sept jours à la date d'échéance de la facture

Cet exemple décale toutes les dates d'échéance des factures de sept jours.

add_filter( 'igfw_invoice_due_date', function ( $due, $order ) {
	return $due + ( 7 * DAY_IN_SECONDS );
}, 10, 2 );

Besoin d'aide ?

Si vous avez une question ou rencontrez des problèmes, nous sommes là pour vous aider.

Cet article vous a-t-il été utile ?

Articles liés

Finalisez votre achat