Woocommerce: Changer le prix d’un produit en fonction d’un client
par Robert Schmid · Publié · Mis à jour
Dans cet article nous allons voir comment changer le prix d’un produit en fonction d’un champs personnalisé, aussi appelés user meta data.
Pour commencer, il faut créer une fonction impactant le prix de l’article
Dans votre fichier functions.php, créez votre fonction puis grâce aux hooks, ajoutez la via la fonction add_filter.
// Un changement de prix gobal
function eloou_price( $price, $product ) {
return $price;
}
add_filter( 'woocommerce_product_get_price', 'eloou_price', 10, 2 );
add_filter( 'woocommerce_product_get_regular_price', 'eloou_price', 10, 2 );
add_filter( 'woocommerce_product_get_sale_price', 'eloou_price', 10, 2 );
Il faut d’abord vérifier que l’utilisateur soit connecté, puis récupérer le champs personnalisé à cibler
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
$meta = get_the_author_meta( 'votre_custom_meta', $user->ID );
}
Changer le prix de tous les produits
On peut maintenant changer le prix grâce à une formule mathématique, en créant une nouvelle variable $newPrice.
Ligne 7
Le prix changera uniquement si le meta de l’utilisateur existent.
function eloou_price( $price, $product ) {
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
$meta = get_the_author_meta( 'votre_custom_meta', $user->ID );
$newPrice = 0.50;
// on vérifie que le meta existe
if ( $meta ) {
$price = $price * $newPrice;
}
}
return $price;
}
Changer le prix d'un seul produit
Pour viser un produit en particulier, il n’ y a rien de plus simple!
Chaque produit possède un ID. qui se trouve dans l’url du produit de votre administration :
/wp-admin/post.php?post=2494&action=edit&classic-editor
Pour mon exemple, je choisis le produit ayant l’id = 2494.
Ligne 7
Je vais chercher l’ID du produit en me servant d’une fonction Woocommerce.
Ligne 6
Puis je déclare l’ID du produit qui m’intéresse.
Ligne 9
Je rajoute à ma condition: Si le méta existe, et si c’est le produit avec l’ID 2494, alors on change le prix.
function eloou_price( $price, $product ) {
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
$meta = get_the_author_meta( 'votre_custom_meta', $user->ID );
$newPrice = 0.50; // votre réduction
$product_id = 2494; // l'ID de votre produit
$productId = $product->get_id();
if ( $meta && $product_id == $productId ) {
$price = $price * $newPrice;
}
}
return $price;
}
Pour allez plus loin
Vous vous demandez peu être s’il est possible d’ajouter une interface dans l’admin pour modifier les produits, les calculs et peut être même les métas datas ?
Et bien oui!
Mais nous verrons ça dans un prochain article.
Maintenant c’est à vous de jouer!