Cómo crear códigos cortos de productos vistos recientemente en WooCommerce

Publicado: 2021-05-05

Código abreviado de productos vistos recientemente de WooCommerce ¿Está buscando una manera de mostrar productos vistos recientemente usando un código abreviado? En esta publicación, quiero mostrarle cómo crear código abreviado de productos vistos recientemente en WooCommerce. De forma predeterminada, WooCommerce le permite usar un widget para mostrar la lista de productos que un cliente ha visto recientemente.

Esta solución integrada es muy efectiva y creemos que pronto se convertirá en un bloque de Gutenberg.

Sin embargo, es posible que desee mostrar productos relacionados en una página nueva. Esto significa que necesitas crear un shortcode.

Código abreviado de productos vistos recientemente de WooCommerce

En este breve tutorial, compartiremos cómo puede crear un código abreviado simple para mostrar productos vistos recientemente. Antes de continuar, debe tener en cuenta que esta solución implica el manejo de código.

Si no está familiarizado con el manejo de código, le recomendamos que se comunique con un desarrollador calificado de WordPress para que no arruine su sitio.

También debe crear un tema secundario para que sus cambios no se pierdan durante una actualización.

Veamos cómo puedes lograr esto.

Pasos para agregar código abreviado de productos vistos recientemente

Para crear el código abreviado, aprovecharemos el código abreviado de [productos] existente y "pasaremos" las identificaciones de los productos sin la necesidad de reinventar la rueda.

Alternativamente, puede crear un complemento que registre un código abreviado en un tema. Usaremos este método, ya que es el más fácil.

Debe crear una nueva carpeta con el nombre del complemento.

Si no ve productos recientes, es porque aún necesita tener activo un widget de Productos vistos recientemente. La cookie "woocommerce_recently_viewed" se almacena solo cuando el widget de productos vistos recientemente está en uso.

Los datos más importantes que necesitamos se almacenan en cookies llamadas $_COOKIE['woocommerce_recently_viewed'].

Puede incluir su propio código para rastrear/crear cookies si lo desea:

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

Aquí está el código completo para el complemento:


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

Después de agregar el código, agregue [woocommerce_recently_viewed_products per_page=”5″] en cualquier página.

Este es el resultado: Salir

Conclusión

En este breve tutorial, hemos compartido cómo puede mostrar productos vistos recientemente usando un código abreviado.

Debe tener cuidado al editar el archivo functions.php porque si comete un error, mostrará un error crítico.

Artículos similares

  1. Más de 100 consejos, trucos y fragmentos Guía definitiva para ocultar WooCommerce
  2. Cómo usar códigos cortos de WordPress en páginas o publicaciones con ejemplo
  3. Cómo configurar el envío gratuito con un gasto mínimo en WooCommerce