Woocommerce afficher les produits par ordre alphabétique sur la page commande

Pour afficher les produits par ordre alphabétique sur la page commande de vos clients ajouter le code suivant dans le fichier function.php de votre thème wordpress.

Pour trier par ordre alphabétique je vais utiliser la fonction natsort qui implémente un algorithme de tri qui traite les chaînes alpha-numériques du tableau arraycomme un être humain tout en conservant la relation clé/valeur. C’est ce qui est appelé l'”ordre naturel”.

add_action( 'woocommerce_cart_loaded_from_session','nax_order_product'); 

function nax_order_product() {
    global $woocommerce;

	$products_in_cart = array();

	foreach ( $woocommerce->cart->cart_contents as $key => $item ) {
		$products_in_cart[ $key ] = $item['data']->get_title();
	}

	natsort( $products_in_cart );

	$cart_contents = array();

	foreach ( $products_in_cart as $cart_key => $product_title ) {

		$cart_contents[ $cart_key ] = $woocommerce->cart->cart_contents[ $cart_key ];
	}

	$woocommerce->cart->cart_contents = $cart_contents;

}

 

Shortcodes Woocommerce

WooCommerce > 2.1.x Shortcodes:

 

Afficher le panier

Pour afficher le panier dans une page template ajouter le shortcode suivant :

Votre panier est actuellement vide.

Retour à la boutique

Afficher la page commande

Pour afficher la page commande dans une page template ajouter le shortcode suivant :

Afficher le suivi de la commande

Pour afficher la page commande dans une page template ajouter le shortcode suivant :

Pour suivre votre commande veuillez saisir votre ID de commande dans la boite ci-dessous et cliquer le bouton « Suivre ». Il vous a été donné sur votre reçu et dans l’e-mail de confirmation que vous avez du recevoir.

Afficher le compte du client

Pour afficher le compte du client dans une page template ajouter le shortcode suivant :

Connexion

Le client pourra consulter toutes les commandes passé vous pouvez limité le nombre de commande passé a afficher avec order_count par défaut le paramètre est 15 (-1 affiche toutes les commandes) et ils peuvent aussi modifier leurs informations.

Args :

array 
     ('current_user' => '', 
     'order_count' => 
 '15')

L’argument de l’utilisateur est basé sur les fonctions get_user_by ( ) et get_current_user_id ( ).

Afficher les produits récents

Pour afficher une liste de produit récent dans une page template ajouter le shortcode suivant :


per_page détermine le nombre de produits à afficher sur la page et columns le nombre de colonnes. Vous pouvez utilisez des arguments supplémentaires :

Args :

array(
     'per_page' => '12',
      'columns' => '4',
      'orderby' => 'date',
      'order' => 'desc'
 )

orderby vous sert a déterminé quel type affichage :

  1. ID (Classement par identifiant)
  2. author (Classement par auteur.)
  3. title (Tri par titre)
  4. name (Trier par nom – slug)
  5. date (Classer par date)
  6. modified (Classement par date de dernière modification.)
  7. rand (Classement aléatoire)
  8. comment_count (Classement par nombre d’avis/commentaire)

order va classer par ordre croissant ou décroissant orderby.

  • ASC – De la plus petite à la plus hautes valeurs ascendant (1, 2, 3; a, b, c).
  • DESC – De la plus élevée des valeurs les plus bas décroissant (3, 2, 1, c, b, a).

Pour afficher vos produits phares dans une page template ajouter le shortcode suivant :

De la même façon que produits récents vous pouvez définir l’affichage, les produits phares sont basé sur les notes(rating stars).

Afficher un produit

Pour afficher un produit dans une page ou un article par identifiant ou référence(UGS) ajouter le shortcode suivant :

Vous pouvez récupérer l’identifiant dans la liste de vos produits.

 

Afficher plusieurs produits

Pour afficher plusieurs produits dans une page ou un article par identifiant ou référence(UGS) ajouter le shortcode suivant :

Args :

array(
      'columns' => '4',
      'orderby' => 'date',
      'order' => 'desc'
 )

orderby vous sert a déterminé quel type affichage :

  1. ID (Classement par identifiant)
  2. author (Classement par auteur.)
  3. title (Tri par titre)
  4. name (Trier par nom – slug)
  5. date (Classer par date)
  6. modified (Classement par date de dernière modification.)
  7. rand (Classement aléatoire)
  8. comment_count (Classement par nombre d’avis/commentaire)

order va classer par ordre croissant ou décroissant orderby.

  • ASC – De la plus petite à la plus hautes valeurs ascendant (1, 2, 3; a, b, c).
  • DESC – De la plus élevée des valeurs les plus bas décroissant (3, 2, 1, c, b, a).

Afficher le bouton ajouter au panier

Pour afficher le bouton ajouter au panier dans une page ou un article par identifiant ou référence(UGS) ajouter le shortcode suivant :


Vous pouvez personnaliser l’apparence du bouton ajouter au panier en utilisant l’argument style.

Args :

array(
      'id' => '49',
      'style' => 'border:4px solid #ccc; padding: 12px;',
      'sku' => 'REF'
 )

Afficher l’url du bouton ajouter au panier

Pour afficher l’url du bouton ajouter au panier dans une page ou un article par identifiant ou référence(UGS) ajouter le shortcode suivant :


 

Args :

array(
      'id' => '49',
      'sku' => 'REF'
 )

Afficher une page produit

Pour afficher l’url du bouton ajouter au panier dans une page ou un article par identifiant ou référence(UGS) ajouter le shortcode suivant :

Afficher une carégorie de produits

Pour afficher une catégorie de produits dans une page ou un article par slug (Un slug est tout simplement un identifiant nom utilisable dans les adresses url il ne comporte pas d’accent ni de majuscule.) ajouter le shortcode suivant :

 

Args :

array(
 'per_page' => '12',
 'columns' => '4',
 'orderby' => 'title',
 'order' => 'asc',
 'category' => 'montres'
 )

per_page : nombre de produit a afficher.

columns : nombre de colone.

orderby vous sert a déterminé quel type affichage :

  1. ID (Classement par identifiant)
  2. author (Classement par auteur.)
  3. title (Tri par titre)
  4. name (Trier par nom – slug)
  5. date (Classer par date)
  6. modified (Classement par date de dernière modification.)
  7. rand (Classement aléatoire)
  8. comment_count (Classement par nombre d’avis/commentaire)

order va classer par ordre croissant ou décroissant orderby.

  • ASC – De la plus petite à la plus hautes valeurs ascendant (1, 2, 3; a, b, c).
  • DESC – De la plus élevée des valeurs les plus bas décroissant (3, 2, 1, c, b, a).

category : slug de la catégorie.

Afficher un index des catégories de vos produits

Le shortcode suivant va vous permettre d’afficher un index des catégories de vos produits.

L’argument number est utilisé pour afficher le nombre de produits et l’argument ids est l’identifiant qui permet d’afficher une ou plusieurs catégories.

L’argument parent permet d’afficher ou pas les sous catégories produit exemple :

Vêtement (catégorie niveau 0)

  • Femmes (sous catégorie niveau 1)

 

Args :

array(
      'number' => 'null',
      'orderby' => 'name',
      'order' => 'ASC',
      'columns' => '4',
      'hide_empty' => '1',
      'parent' => '',
      'ids' => ''
 )

orderby vous sert a déterminé quel type affichage :

  1. ID (Classement par identifiant)
  2. author (Classement par auteur.)
  3. title (Tri par titre)
  4. name (Trier par nom – slug)
  5. date (Classer par date)
  6. modified (Classement par date de dernière modification.)
  7. rand (Classement aléatoire)
  8. comment_count (Classement par nombre d’avis/commentaire)

order va classer par ordre croissant ou décroissant orderby.

  • ASC – De la plus petite à la plus hautes valeurs ascendant (1, 2, 3; a, b, c).
  • DESC – De la plus élevée des valeurs les plus bas décroissant (3, 2, 1, c, b, a).

Afficher les produits en vente

Se shortcode vous permet d’afficher les produits en vente sur votre site :

 

Args :

array(
     'per_page' => '12',
     'columns' => '4',
     'orderby' => 'title',
     'order' => 'asc'
 )

per_page : nombre de produit a afficher.

columns : nombre de colone.

orderby vous sert a déterminé quel type affichage :

  1. ID (Classement par identifiant)
  2. author (Classement par auteur.)
  3. title (Tri par titre)
  4. name (Trier par nom – slug)
  5. date (Classer par date)
  6. modified (Classement par date de dernière modification.)
  7. rand (Classement aléatoire)
  8. comment_count (Classement par nombre d’avis/commentaire)

order va classer par ordre croissant ou décroissant orderby.

  • ASC – De la plus petite à la plus hautes valeurs ascendant (1, 2, 3; a, b, c).
  • DESC – De la plus élevée des valeurs les plus bas décroissant (3, 2, 1, c, b, a).

Afficher les meilleures ventes de produits

Pour afficher vos produits dans une page template ajouter le shortcode suivant :

 

Args :

array(
     'per_page' => '12',
     'columns' => '4'
 )

per_page : nombre de produit a afficher.

columns : nombre de colone.

Afficher les produits les mieux notés

Pour afficher les produits les mieux notés dans une page template ajouter le shortcode suivant :

 

Args :

array(
     'per_page' => '12',
     'columns' => '4',
     'orderby' => 'title',
     'order' => 'asc'
 )

per_page : nombre de produit a afficher.

columns : nombre de colone.

orderby vous sert a déterminé quel type affichage :

  1. ID (Classement par identifiant)
  2. author (Classement par auteur.)
  3. title (Tri par titre)
  4. name (Trier par nom – slug)
  5. date (Classer par date)
  6. modified (Classement par date de dernière modification.)
  7. rand (Classement aléatoire)
  8. comment_count (Classement par nombre d’avis/commentaire)

order va classer par ordre croissant ou décroissant orderby.

  • ASC – De la plus petite à la plus hautes valeurs ascendant (1, 2, 3; a, b, c).
  • DESC – De la plus élevée des valeurs les plus bas décroissant (3, 2, 1, c, b, a).

Afficher les produits par attributs

Pour afficher les produits les mieux notés dans une page template ajouter le shortcode suivant :

 

Args :

array(
     'per_page' => '12',
     'columns' => '4',
     'orderby' => 'title',
     'order' => 'asc',
     'attribute' => '',
     'filter' => ''
 )

per_page : nombre de produit a afficher.

columns : nombre de colone.

orderby vous sert a déterminé quel type affichage :

  1. ID (Classement par identifiant)
  2. author (Classement par auteur.)
  3. title (Tri par titre)
  4. name (Trier par nom – slug)
  5. date (Classer par date)
  6. modified (Classement par date de dernière modification.)
  7. rand (Classement aléatoire)
  8. comment_count (Classement par nombre d’avis/commentaire)

order va classer par ordre croissant ou décroissant orderby.

  • ASC – De la plus petite à la plus hautes valeurs ascendant (1, 2, 3; a, b, c).
  • DESC – De la plus élevée des valeurs les plus bas décroissant (3, 2, 1, c, b, a).

Pour afficher des produits une page template ajouter le shortcode suivant :


 

Args :

array(
     'per_page' => '12',
     'columns' => '4',
     'orderby' => 'title'
 )

per_page : nombre de produit a afficher.

columns : nombre de colone.

orderby vous sert a déterminé quel type affichage :

  1. ID (Classement par identifiant)
  2. author (Classement par auteur.)
  3. title (Tri par titre)
  4. name (Trier par nom – slug)
  5. date (Classer par date)
  6. modified (Classement par date de dernière modification.)
  7. rand (Classement aléatoire)
  8. comment_count (Classement par nombre d’avis/commentaire)

 

Woocommerce personnalisé les messages ajouter au panier

Le code ci-dessous va permettre de personnalisé les messages que les produits ont bien été ajouter au panier sur la page produit et panier.
Si vous avez activé : Rediriger vers le panier après un ajout réussi dans Woocommerce > Paramètre > produit le message suivant apparaitra :

– Votre article a bien été ajouté au panier. Continuer mes achats

Si vous n’avez pas cochez Rediriger vers le panier après un ajout réussi le message suivant apparaitra sur la page produit :

– Votre article a bien été ajouté au panier. Voir mon panier

Ajouter le code suivant dans le fichier function.php de votre thème WordPress :

function new_add_to_cart_message() {
global $woocommerce;
	
	if (get_option('woocommerce_cart_redirect_after_add')=='yes') :
		$return_to 	= get_permalink(woocommerce_get_page_id('shop'));

	// Message pour le panier
    $message = sprintf( '%s<a href="%s" class="your-style">%s</a> ', __( 'Votre article a bien été ajouté au panier.', 'woocommerce' ), esc_url( get_permalink( woocommerce_get_page_id( 'shop' ) ) ), __( 'Continuer mes achats', 'woocommerce' ) );
else :
	// Message pour la page produit
    $message = sprintf( '%s<a href="%s" class="your-class">%s</a> ', __( 'Votre article a bien été ajouté au panier.' , 'woocommerce' ), esc_url( get_permalink( woocommerce_get_page_id( 'cart' ) ) ), __( 'Voir mon panier', 'woocommerce' ) );
endif;
return $message;
}
add_filter( 'wc_add_to_cart_message', 'new_add_to_cart_message' );

Afficher le contenu du panier sans Widget – Woocommerce

Pour afficher le contenu du panier sans widget dans votre site marchant sous Woocommerce, placer le code suivant a l’endroit désiré :

<a href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php _e( 'Voir votre panier' ); ?>"><?php echo sprintf (_n( '%d Article', '%d Articles', WC()->cart->cart_contents_count ), WC()->cart->cart_contents_count ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a>

Puis pour utiliser Ajax ajouter le code suivant dans le fichier function.php de votre thème WordPress :

add_filter( 'woocommerce_add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment' );
function woocommerce_header_add_to_cart_fragment( $fragments ) {
	ob_start();
	?>
	<a class="cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php _e( 'Voir votre panier' ); ?>"><?php echo sprintf (_n( '%d Article', '%d Articles', WC()->cart->cart_contents_count ), WC()->cart->cart_contents_count ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a> 
	<?php
	
	$fragments['a.cart-contents'] = ob_get_clean();
	
	return $fragments;
}

Ajouter automatiquement un produit au panier

Si vous souhaitez ajouter automatiquement un produit au panier lors de la visite d’un internaute dans votre boutique Woocommerce.
Ajouter le code suivant dans le fichier function.php de votre thème WordPress :

// Ajouter un produit automatiquement
add_action( 'init', 'add_product_to_cart' );

function add_product_to_cart() {
if ( ! is_admin() ) {
global $woocommerce;
$product_id = 22;
$found = false;
//On vérifie si il y a déja un produit dans le panier
if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) {
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if ( $_product->id == $product_id )
$found = true;
}

if ( ! $found )
$woocommerce->cart->add_to_cart( $product_id );
} else {

$woocommerce->cart->add_to_cart( $product_id );
}
}
}

 

A la ligne 6 $product_id = 22  remplacer 22 par l’identifiant du produit à ajouter automatiquement.

2015-08-15_18h24_58

2/ Permettre a votre client de supprimer le produits ajouter automatiquement dans le panier.

Si vous voulez permettre à votre client de supprimer un produit qui a été ajouté automatiquement dans leur panier, vous pouvez ajouter le code suivant dans le fichier function.php. Ce code va créer une règle sur la page du panier et de commande qui permettra à votre client de supprimer le produit qui a été ajouté automatiquement.

 

add_action( 'template_redirect', 'add_product_to_cart' );

function add_product_to_cart() {
    if ( ! is_admin()  && !is_cart() && !is_checkout()) {
        $product_id = 71; //Remplacer 22 par l'identifiant de votre produit
        $found = false;
        // On vérifie si le produit est déjà dans le panier
        if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
            foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
                $_product = $values['data'];
                if ( $_product->get_id() == $product_id )
                    $found = true;
            }
            // Si le produit n'est pas trouvé, ajoutez-le.
            if ( ! $found )
                WC()->cart->add_to_cart( $product_id );
        } else {
            // if no products in cart, add it
            WC()->cart->add_to_cart( $product_id );
        }
    }
}

 

3/ Ajouté un produit automatiquement en fonction du montant du panier.

Dans ce 3éme extrait de code vous pouvez définir un montant minimum pour avoir un produit gratuitement et votre client pourra le supprimer dans son panier. Ajouter le code suivant dans le fichier function.php.

/*
* Ajout automatique du produit au panier lorsque le montant total du panier atteint 60€.
*/

function naxialis_add_product_to_cart() {
    global $woocommerce;
    
    if ( ! is_admin()  && !is_cart() && !is_checkout()) {
    
    $cart_total	= 60; // Ici on defini le montant minimum pour avoir le produit gratuit	

    if ( $woocommerce->cart->total >= $cart_total ) {
        if ( ! is_admin() ) {
            $free_product_id = 22;  // Remplacer 22 par l'identifiant de votre produit
            $found 		= false;

            // On vérifie si le produit est déjà dans le panier
            if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
                foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
                    $_product = $values['data'];
                    if ( $_product->get_id() == $free_product_id )
                    	$found = true;	                
                }
                // Si le produit n'est pas trouvé, ajoutez-le.
                if ( ! $found )
                    WC()->cart->add_to_cart( $free_product_id );
            } else {
                // if no products in cart, add it
                WC()->cart->add_to_cart( $free_product_id );
            }        
        }
    }
    }        
}

add_action( 'template_redirect', 'naxialis_add_product_to_cart' );

 

Ajouter un nouveau pays dans liste des pays dans Woocmmerce

Voici une petite fonction qui va vous permettre d’ajouter un nouveau pays à la liste des pays WooCommerce.

Ajouter le code suivant dans le fichier function.php de votre thème WordPress :

function woo_add_my_country( $country ) {
   $country["AE-DU"] = 'Dubai';
   return $country;
}
add_filter( 'woocommerce_countries', 'woo_add_my_country', 10, 1 );

Ajouter une classe css aux champs du formulaire de commande

Si vous voulez personnalisez le formulaire de commande dans WooCommerce, vous pouvez ajouter une classe css en ajoutant le code ci-dessous dans le fichier function.php de votre thème WordPress.

add_filter('woocommerce_billing_fields', 'custom_woocommerce_billing_fields');

function custom_woocommerce_billing_fields( $fields ) {
	
  $fields['billing_first_name']['input_class'] = array( 'form-control' ); // Champ Prénom
  
  $fields['billing_last_name']['input_class'] = array( 'form-control' ); // Champ Nom
  return $fields;
}

Liste des champs par défaut

  • Facturation
    • billing_first_name
    • billing_last_name
    • billing_company
    • billing_address_1
    • billing_address_2
    • billing_city
    • billing_postcode
    • billing_country
    • billing_state
    • billing_email
    • billing_phone
  • Adresse de livraison
    • shipping_first_name
    • shipping_last_name
    • shipping_company
    • shipping_address_1
    • shipping_address_2
    • shipping_city
    • shipping_postcode
    • shipping_country
    • shipping_state
  • Login
    • account_username
    • account_password
    • account_password-2
  • Information complémentaire
    • order_comments

Ajouter un champ confirmer le mot de passe dans WooCommerce

Lors de la finalisation de la commande dans WooCommerce, il est utile de rajouter confirmer le mot de passe quant un nouveau client créer un compte. Pour ajouter se champ supplémentaire et sa validation, ajouter le code suivant dans le fichier function.php de votre Thème WordPress :

// Ajouter confirmer le mot de passe pour l'inscription
add_action( 'woocommerce_checkout_init', 'wc_add_confirm_password_checkout', 10, 1 );
function wc_add_confirm_password_checkout( $checkout ) {
	if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) {
		$checkout->checkout_fields['account']['account_password2'] = array(
			'type' 				=> 'password',
			'label' 			=> __( 'Confirmez le mot de passe', 'woocommerce' ),
			'required'          => true,
			'placeholder' 		=> _x( 'Confirmez le mot de passe', 'placeholder', 'woocommerce' )
		);
	}
}

// vérifie le mot de passe et valide les champs de mot de passeadd_action( 'woocommerce_after_checkout_validation', 'wc_check_confirm_password_matches_checkout', 10, 2 );
function wc_check_confirm_password_matches_checkout( $posted ) {
	$checkout = WC()->checkout;
	if ( ! is_user_logged_in() && ( $checkout->must_create_account || ! empty( $posted['createaccount'] ) ) ) {
		if ( strcmp( $posted['account_password'], $posted['account_password2'] ) !== 0 ) {
			wc_add_notice( __( 'Les mots de passe ne correspondent pas.', 'woocommerce' ), 'error' );
		}
	}
}