Código corto de productos vistos recientemente por WooCommerce

Código corto de productos vistos recientemente por WooCommerce

Hace unos días, el equipo de WooThemes anuncio versión 2 del muy popular complemento WooCommerce que permite que cada WordPress web para vender todo tipo de productos de forma muy sencilla. Aunque estoy más acostumbrado a trabajar con el increíble plugin Easy Digital Downloads, por los muy talentosos Pippin williamson, Quería profundizar un poco más en WooCommerce y mostrarte cómo usar las funciones existentes para crear nuevas funciones. Y hoy me gustaría explicarle cómo crear un código corto que muestre los productos vistos recientemente. Los productos vistos recientemente son una característica increíblemente poderosa solo porque, para mí, es un tipo muy básico de inteligencia artificial. Permite a los usuarios volver fácilmente a los productos que ya han visto en segundos. Y usar un código corto para mostrar los productos vistos recientemente es excelente porque puede colocarlo en cualquier lugar de su sitio web.

Normalmente, cuando creo un tutorial en WPexplorer, explico el método paso a paso, pero como el tutorial de hoy es un poco más largo, prefiero explicar todo el proceso y luego proporcionarle el código completo con comentarios directamente en el código.

Hazlo en un shortcode

Por lo tanto, crearemos un complemento que registrará un [woocommerce_recently_viewed_products per_page=”5″] pequeño código. ¿Por qué crear un complemento? Porque es la forma más sencilla de almacenar una función que puede utilizar con cualquier tema. Si decide guardar un shortcode en un tema, el shortcode solo estará disponible si el tema está habilitado. Con un complemento, no importa qué tema use, la función siempre estará disponible. Otra cosa muy importante es que nunca debes editar archivos de WooCommerce.

¿Te gustan las galletas? ¡Realmente lo hago!

De forma predeterminada, WooCommerce crea una cookie que almacena datos importantes sobre lo que hace y ve un visitante en la tienda. Y ese es exactamente el tipo de datos que necesitamos para construir nuestro complemento. Los datos más importantes que necesitamos se almacenan en una cookie llamada $ _GALLETA[‘woocommerce_recently_viewed’]. Básicamente, esta cookie almacena el ID de los últimos productos vistos. Como WooCommerce ya registra estas credenciales, nuestro trabajo es finalmente crear la consulta correcta usando el “publicar”Y para asegurarnos de que los productos que necesitamos exhibir estén siempre en stock. Para hacer esto tenemos que usar el $ woocommerce-> consulta-> stock_status_meta_query () método en el “meta_consulta”Atributo de consulta.

El código completo del complemento

Como el código es bastante simple, agregué los comentarios directamente en el código y no hice un tutorial paso a paso, pero si algo no está claro, escriba un comentario y seré más que eso. feliz de explicarles parte del código a cada uno!

<?php
/*
Plugin Name: WooCommerce - Recently Viewed Products
Plugin URL: http://remicorson.com/
Description: Adds a "recently viewed products" shortcode
Version: 1.0
Author: Remi Corson
Author URI: http://remicorson.com
Contributors: corsonr
Text Domain: rc_wc_rvp
Domain Path: languages
*/

/**
 * Register the [woocommerce_recently_viewed_products per_page="5"] shortcode
 *
 * This shortcode displays recently viewed products using WooCommerce default cookie
 * It only has one parameter "per_page" to choose number of items to show
 *
 * @access      public
 * @since       1.0 
 * @return      $content
*/
function rc_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", "rc_woocommerce_recently_viewed_products");

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir arriba