J'utilise woocommerce au travail pour les demandes d'équipement. Par conséquent, tous les produits que je créerai devront être à 0 £. Est-il possible de définir une valeur par défaut de 0 pour le champ de prix régulier sur la fiche d'ajout de produit?
Merci Jack
Vous pouvez exécuter une vérification sur le hook save_post
, mais WooCommerce a déjà un crochet pour le traitement des méta où le type de publication et les vérifications de sécurité ont déjà été effectués. Donc, en utilisant leur crochet, il vous suffit de rechercher une chaîne nulle sur le prix normal et de la définir sur 0.
function wpa104760_default_price( $post_id, $post ) {
if ( isset( $_POST['_regular_price'] ) && trim( $_POST['_regular_price'] ) == '' ) {
update_post_meta( $post_id, '_regular_price', '0' );
}
}
add_action( 'woocommerce_process_product_meta', 'wpa104760_default_price' );
Je ne sais pas ce que vous essayez de faire avec WooCommerce, mais j'avais un client à utiliser http://a3rev.com/shop/woocommerce-quotes-and-orders/ pour passer d'un magasin de cartographie normal vers un catalogue "demande de devis".
Modifier: Bien que les éléments ci-dessus permettent d’économiser un 0 comme prix chaque fois qu’un produit est créé/mis à jour, les éléments suivants permettent toujours à un produit d’être acheté quel que soit le prix:
add_filter('woocommerce_is_purchasable', '__return_TRUE');
Pour supprimer totalement le flash "sale", il suffit de le décrocher de son crochet d'action:
function woocommerce_remove_stuff(){
remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_sale_flash', 10 );
}
add_action('woocommerce_before_single_product', 'woocommerce_remove_stuff');
J'ai trouvé la solution à ce problème, cette fonction définit le prix régulier du produit et le prix de vente à 0 après la mise à jour du produit:
function set_default_price( $post_id, $post ) {
if ( isset( $_POST['_regular_price'] ) && trim( $_POST['_regular_price'] ) == '' ) {
update_post_meta( $post_id, '_regular_price', '0' );
}
if ( isset( $_POST['_sale_price'] ) && trim( $_POST['_sale_price'] ) == '' ) {
update_post_meta( $post_id, '_sale_price', '0' );
}
}
add_action( 'woocommerce_process_product_meta', 'set_default_price' );
La ligne de code ci-dessous rend le nouveau produit achetable. Vous pouvez utiliser ce code pour les nouveaux produits:
add_filter('woocommerce_is_purchasable', '__return_TRUE');