Quatrième partie pour la série des astuces d’intégration pour WooCommerce. Pour rappel, WooCommerce est basé sur WordPress.
5 Best WooCommerce snippets for WordPress, part 4
Les bouts de code doivent être placés dans le fichier functions.php de votre thème pour fonctionner.
C’est parti donc pour cette quatrième série de 5 bouts de code à utiliser sur WooCommerce :
1 – Rendre des champs d’inscription client requis
add_filter( 'woocommerce_checkout_fields', 'woo_filter_account_checkout_fields' ); function woo_filter_account_checkout_fields( $fields ) { $fields['account']['account_username']['required'] = true; $fields['account']['account_password']['required'] = true; $fields['account']['account_password-2']['required'] = true; return $fields; }
2 – Masquer le compteur de produits dans la page catégorie
add_filter( 'woocommerce_subcategory_count_html', 'woo_remove_category_products_count' ); function woo_remove_category_products_count() { return; }
3 – Afficher « produit déjà dans le panier » au lieu du bouton « ajouter au panier »
/** * Change the add to cart text on single product pages */ add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' ); function woo_custom_cart_button_text() { global $woocommerce; foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) { $_product = $values['data']; if( get_the_ID() == $_product->id ) { return __('Produit déjà dans le panier - Ajouter à nouveau ?', 'woocommerce'); } } return __('Ajouter au panier', 'woocommerce'); } /** * Change the add to cart text on product archives */ add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' ); function woo_archive_custom_cart_button_text() { global $woocommerce; foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) { $_product = $values['data']; if( get_the_ID() == $_product->id ) { return __('Produit déjà dans le panier', 'woocommerce'); } } return __('Ajouter au panier', 'woocommerce'); }
4 – Remplacer « out of stock » par « sold »
Il faut ensuite traduire via un plugin tel que Codestyling Localization pour avoir le texte en français.
add_filter('woocommerce_get_availability', 'availability_filter_func'); function availability_filter_func($availability) { $availability['availability'] = str_ireplace('Out of stock', 'Sold', $availability['availability']); return $availability; }
5 – Ajouter un champ personnaliser à une déclinaison produit
//Display Fields add_action( 'woocommerce_product_after_variable_attributes', 'variable_fields', 10, 2 ); //JS to add fields for new variations add_action( 'woocommerce_product_after_variable_attributes_js', 'variable_fields_js' ); //Save variation fields add_action( 'woocommerce_process_product_meta_variable', 'variable_fields_process', 10, 1 ); function variable_fields( $loop, $variation_data ) { ?> <tr> <td> <div> <label></label> <input type="text" size="5" name="my_custom_field[]" value=""/> </div> </td> </tr> <tr> <td> <div> <label></label> </div> </td> </tr> <?php } function variable_fields_process( $post_id ) { if (isset( $_POST['variable_sku'] ) ) : $variable_sku = $_POST['variable_sku']; $variable_post_id = $_POST['variable_post_id']; $variable_custom_field = $_POST['my_custom_field']; for ( $i = 0; $i < sizeof( $variable_sku ); $i++ ) : $variation_id = (int) $variable_post_id[$i]; if ( isset( $variable_custom_field[$i] ) ) { update_post_meta( $variation_id, '_my_custom_field', stripslashes( $variable_custom_field[$i] ) ); } endfor; endif; }
A très vite pour le dernier billet de la série