fbpx

Bem vindo ao
Blog da FULL.

Aprenda, crie e cresça seu negócio na internet.

Encontre conteúdos, dicas, tutoriais e novidades sobre as principais ferramentas Wordpress

Plugin de Shortcode de Produtos Visualizados Recentemente WooCommerce

Você está em:

Plugin de Shortcode de Produtos Visualizados Recentemente WooCommerce

Alguns dias atrás, a equipe WooThemes anunciou a versão 2 do muito popular plugin WooCommerce que permite que todos os sites WordPress vendam qualquer tipo de produto com muita facilidade. Mesmo que eu esteja mais acostumado a trabalhar com o incrível plugin Easy Digital Downloads , do talentosíssimo Pippin Williamson, eu queria ir um pouco mais fundo no WooCommerce e mostrar como você pode usar os recursos existentes para criar novas funções. E hoje eu gostaria de explicar como criar um shortcode que exibe os produtos visualizados recentemente.

Produtos vistos recentemente são um recurso incrivelmente poderoso simplesmente porque é, para mim, uma espécie de inteligência artificial muito básica. Ele permite que os usuários voltem facilmente aos produtos que já visualizaram em questão de segundos. E o fato de usar um shortcode para exibir produtos visualizados recentemente é ótimo porque você pode colocá-lo em qualquer lugar do seu site.

Normalmente quando crio um tutorial no WPexplorer explico passo a passo o método, mas como o tutorial de hoje é um pouco mais longo, prefiro explicar todo o processo e depois passar o código completo com comentários diretamente no código.

Fazendo isso dentro de um shortcode

Então, vamos criar um plugin que registrará um shortcode [woocommerce_recently_viewed_products per_page=”5″] . Por que criar um plugin? Porque é a maneira mais fácil de armazenar um recurso que você pode usar com qualquer tema. Se você decidir registrar um shortcode em um tema, o shortcode estará disponível somente se o tema estiver ativado. Com um plugin, não importa o tema que você esteja usando, o recurso ainda estará disponível. Outra coisa muito importante é que você nunca deve modificar os arquivos do WooCommerce.

Você gosta de biscoitos? Eu realmente quero!

Por padrão, o WooCommerce cria um cookie que armazena dados importantes sobre o que um visitante faz e vê na loja. E esse é exatamente o tipo de dados que precisamos para criar nosso plugin. Os dados mais importantes que precisamos são armazenados em cookies chamados  $_COOKIE[‘woocommerce_recently_viewed’] . Basicamente, este cookie armazena o ID dos últimos produtos visualizados. Como o WooCommerce já está salvando esses IDs, nosso trabalho é finalmente criar a boa consulta usando o atributo de consulta “ post__in ” e garantir que os produtos que precisamos exibir ainda estejam em estoque. Para fazer isso, precisamos usar o  método $woocommerce->query->stock_status_meta_query() no atributo de consulta “ meta_query ”.

O código completo do plugin

Como o código é bem simples, adicionei os comentários diretamente no código, e não fiz um tutorial passo a passo, mas se algo não estiver claro, escreva um comentário e terei o maior prazer em explicar cada um parte do código!

<?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_recentl

Aprenda com a FULL.

Junte-se a mais de 50 mil pessoas que recebem em primeira mão as principais ferramentas e tecnologia para desenvolvimento web

Meu carrinho
🎁 Faltam R$100,00 para liberar a Black da FULL
Seu carrinho está vazio.

Parece que você não adicionou nada ao seu carrinho =(