Come creare uno shortcode per i prodotti visualizzati di recente WooCommerce

Pubblicato: 2021-05-05

Shortcode dei prodotti visualizzati di recente di WooCommerce Stai cercando un modo per visualizzare i prodotti visualizzati di recente utilizzando uno shortcode? In questo post voglio mostrarti come creare lo shortcode dei prodotti WooCommerce visti di recente. Per impostazione predefinita, WooCommerce ti consente di utilizzare un widget per visualizzare l'elenco dei prodotti che un cliente ha visualizzato di recente.

Questa soluzione integrata è molto efficace e riteniamo che presto diventerà un blocco Gutenberg.

Tuttavia, potresti voler visualizzare i prodotti correlati su una nuova pagina. Ciò significa che è necessario creare uno shortcode.

Shortcode dei prodotti visualizzati di recente di WooCommerce

In questo breve tutorial, condivideremo come creare un semplice shortcode per visualizzare i prodotti visualizzati di recente. Prima di procedere, è necessario notare che questa soluzione comporta la gestione del codice.

Se non hai familiarità con la gestione del codice, ti consigliamo di contattare uno sviluppatore WordPress qualificato in modo da non rovinare il tuo sito.

Dovresti anche creare un tema figlio in modo che le modifiche non vadano perse durante un aggiornamento.

Vediamo come puoi raggiungere questo obiettivo.

Passaggi per aggiungere lo shortcode dei prodotti visualizzati di recente

Per creare lo shortcode, sfrutteremo lo shortcode [prodotti] esistente e "passeremo" gli ID prodotto ad esso senza la necessità di reinventare la ruota.

In alternativa, puoi creare un plug-in che registra uno shortcode in un tema. Useremo questo metodo, poiché è il più semplice.

Devi creare una nuova cartella con il nome del plugin.

Se non vedi prodotti recenti è perché devi ancora avere un widget Prodotti visti di recente attivo. Il cookie "woocommerce_recently_viewed" viene memorizzato solo quando è in uso il widget dei prodotti visualizzati di recente.

I dati più importanti di cui abbiamo bisogno sono memorizzati in un cookie chiamato $_COOKIE['woocommerce_recently_viewed'].

Se lo desideri, puoi includere il tuo codice per tracciare/creare cookie:

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 );

Ecco il codice completo del 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");

Dopo aver aggiunto il codice, aggiungi [woocommerce_recently_viewed_products per_page=”5″] su qualsiasi pagina.

Questo è il risultato: risultato

Conclusione

In questo breve tutorial, abbiamo condiviso come visualizzare i prodotti visualizzati di recente utilizzando uno shortcode.

Dovresti fare attenzione quando modifichi il file functions.php perché se commetti un errore, verrà visualizzato un errore critico.

Articoli simili

  1. Oltre 100 suggerimenti, trucchi e frammenti Guida definitiva per nascondere WooCommerce
  2. Come utilizzare gli shortcode di WordPress nelle pagine o nei post con l'esempio
  3. Come impostare la spedizione gratuita con una spesa minima in WooCommerce