Comment créer un shortcode WooCommerce pour les produits récemment consultés

Publié: 2021-05-05

WooCommerce Shortcode des produits récemment consultés Vous cherchez un moyen d'afficher les produits récemment consultés à l'aide d'un shortcode ? Dans cet article, je veux vous montrer comment créer un shortcode pour les produits WooCommerce récemment consultés. Par défaut, WooCommerce vous permet d'utiliser un widget pour afficher la liste des produits qu'un client a récemment consultés.

Cette solution intégrée est très efficace et nous pensons qu'elle deviendra bientôt un bloc Gutenberg.

Cependant, vous souhaiterez peut-être afficher les produits associés sur une nouvelle page. Cela signifie que vous devez créer un shortcode.

WooCommerce Shortcode des produits récemment consultés

Dans ce bref didacticiel, nous expliquerons comment vous pouvez créer un code court simple pour afficher les produits récemment consultés. Avant de poursuivre, vous devez noter que cette solution implique la gestion du code.

Si vous n'êtes pas familier avec la gestion du code, nous vous recommandons de contacter un développeur WordPress qualifié afin de ne pas gâcher votre site.

Vous devez également créer un thème enfant afin que vos modifications ne soient pas perdues lors d'une mise à jour.

Voyons comment vous pouvez y parvenir.

Étapes pour ajouter le shortcode des produits récemment consultés

Pour créer le shortcode, nous tirerons parti du shortcode [products] existant et lui "transmettrons" les identifiants de produit sans avoir à réinventer la roue.

Alternativement, vous pouvez créer un plugin qui enregistre un shortcode dans un thème. Nous utiliserons cette méthode car c'est la plus simple.

Vous devez créer un nouveau dossier avec le nom du plugin.

Si vous ne voyez aucun produit récent, c'est parce que vous devez toujours avoir un widget Produits récemment consultés actif. Le cookie "woocommerce_recently_viewed" est stocké uniquement lorsque le widget des produits récemment consultés est utilisé.

Les données les plus importantes dont nous avons besoin sont stockées dans un cookie appelé $_COOKIE['woocommerce_recently_viewed'].

Vous pouvez inclure votre propre code pour tracer/créer des cookies si vous le souhaitez :

function custom_track_product_view() {

    if ( ! is_singular( 'product' ) ) {

        return;

    }

    global $post;

    if ( empty( $_COOKIE['woocommerce_recently_viewed'] ) )

        $viewed_products = array();

    else

        $viewed_products = (array) explode( '|', $_COOKIE['woocommerce_recently_viewed'] );

    if ( ! in_array( $post->ID, $viewed_products ) ) {

        $viewed_products[] = $post->ID;

    }

    if ( sizeof( $viewed_products ) > 15 ) {

        array_shift( $viewed_products );

    }

    // Store for session only

    wc_setcookie( 'woocommerce_recently_viewed', implode( '|', $viewed_products ) );

}

add_action( 'template_redirect', 'custom_track_product_view', 20 );

Voici le code complet du plugin :


function njengah_woocommerce_recently_viewed_products( $atts, $content = null ) {

// Get shortcode parameters

extract(shortcode_atts(array(

"per_page" => '5'

), $atts));

// Get WooCommerce Global

global $woocommerce;

// Get recently viewed product cookies data

$viewed_products = ! empty( $_COOKIE['woocommerce_recently_viewed'] ) ? (array) explode( '|', $_COOKIE['woocommerce_recently_viewed'] ) : array();

$viewed_products = array_filter( array_map( 'absint', $viewed_products ) );

// If no data, quit

if ( empty( $viewed_products ) )

return __( 'You have not viewed any product yet!', 'rc_wc_rvp' );

// Create the object

ob_start();

// Get products per page

if( !isset( $per_page ) ? $number = 5 : $number = $per_page )

// Create query arguments array

$query_args = array(

'posts_per_page' => $number,

'no_found_rows'  => 1,

'post_status'    => 'publish',

'post_type'      => 'product',

'post__in'       => $viewed_products,

'orderby'        => 'rand'

);

// Add meta_query to query args

$query_args['meta_query'] = array();

// Check products stock status

$query_args['meta_query'][] = $woocommerce->query->stock_status_meta_query();

// Create a new query

$r = new WP_Query($query_args);

// If query return results

if ( $r->have_posts() ) {

$content = '<ul class="rc_wc_rvp_product_list_widget">';

// Start the loop

while ( $r->have_posts()) {

$r->the_post();

global $product;

$content .= '<li>

<a href="' . get_permalink() . '">

' . ( has_post_thumbnail() ? get_the_post_thumbnail( $r->post->ID, 'shop_thumbnail' ) : woocommerce_placeholder_img( 'shop_thumbnail' ) ) . ' ' . get_the_title() . '

</a> ' . $product->get_price_html() . '

</li>';

}

$content .= '</ul>';

}

// Get clean object

$content .= ob_get_clean();




// Return whole content

return $content;

}

// Register the shortcode

add_shortcode("woocommerce_recently_viewed_products", "njengah_woocommerce_recently_viewed_products");

Après avoir ajouté le code, ajoutez les [woocommerce_recently_viewed_products per_page=”5″] sur n'importe quelle page.

Voici le résultat : résultat

Conclusion

Dans ce bref tutoriel, nous avons expliqué comment vous pouvez afficher les produits récemment consultés à l'aide d'un shortcode.

Vous devez être prudent lorsque vous modifiez le fichier functions.php car si vous faites une erreur, il affichera une erreur critique.

Articles similaires

  1. Plus de 100 trucs, astuces et extraits Ultimate WooCommerce Hide Guide
  2. Comment utiliser les shortcodes WordPress dans les pages ou les publications avec un exemple
  3. Comment configurer la livraison gratuite avec un minimum de dépenses dans WooCommerce