5 magnifiques astuces WooCommerce #4

Publié le 20 juillet 2015 par Amerigeau @arnaudmerigeau
20 juillet 2015

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 

Tags: