Como criar um código curto de produtos visualizados recentemente no WooCommerce

Publicados: 2021-05-05

Código de acesso dos produtos visualizados recentemente do WooCommerce Você está procurando uma maneira de exibir produtos visualizados recentemente usando um shortcode? Neste post, quero mostrar como criar um shortcode de produtos visualizados recentemente no WooCommerce. Por padrão, o WooCommerce permite que você use um widget para exibir a lista de produtos que um cliente visualizou recentemente.

Esta solução integrada é muito eficaz e acreditamos que em breve se tornará um bloco Gutenberg.

No entanto, você pode querer exibir produtos relacionados em uma nova página. Isso significa que você precisa criar um shortcode.

Código de acesso dos produtos visualizados recentemente do WooCommerce

Neste breve tutorial, compartilharemos como você pode criar um código de acesso simples para exibir produtos visualizados recentemente. Antes de continuar, você precisa observar que esta solução envolve o manuseio de código.

Se você não estiver familiarizado com o manuseio de código, recomendamos entrar em contato com um desenvolvedor qualificado do WordPress para que você não estrague seu site.

Você também deve criar um tema filho para que suas alterações não sejam perdidas durante uma atualização.

Vamos ver como você pode conseguir isso.

Etapas para adicionar o shortcode de produtos visualizados recentemente

Para criar o shortcode, vamos aproveitar o shortcode [produtos] existente e “passar” IDs de produto para ele sem a necessidade de reinventar a roda.

Alternativamente, você pode criar um plugin que registre um shortcode em um tema. Usaremos este método, pois é o mais fácil.

Você precisa criar uma nova pasta com o nome do plugin.

Se você não vir produtos recentes, é porque ainda precisa ter um widget de Produtos visualizados recentemente ativo. O cookie “woocommerce_recently_viewed” é armazenado apenas quando o widget de produtos visualizados recentemente está em uso.

Os dados mais importantes que precisamos são armazenados em cookies chamados $_COOKIE['woocommerce_recently_viewed'].

Você pode incluir seu próprio código para rastrear/criar cookies, se desejar:

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

Aqui está o código completo do 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");

Depois de adicionar o código, adicione o [woocommerce_recently_viewed_products per_page=”5″] em qualquer página.

Este é o resultado: resultado

Conclusão

Neste breve tutorial, compartilhamos como você pode exibir produtos visualizados recentemente usando um shortcode.

Você deve ter cuidado ao editar o arquivo functions.php porque se cometer um erro, ele exibirá um erro crítico.

Artigos semelhantes

  1. Mais de 100 dicas, truques e trechos Ultimate WooCommerce Hide Guide
  2. Como usar códigos de acesso do WordPress em páginas ou postagens com exemplo
  3. Como configurar frete grátis com gasto mínimo no WooCommerce