Como criar um código curto de produtos visualizados recentemente no WooCommerce
Publicados: 2021-05-05Você 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:
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
- Mais de 100 dicas, truques e trechos Ultimate WooCommerce Hide Guide
- Como usar códigos de acesso do WordPress em páginas ou postagens com exemplo
- Como criar minha página de conta no WooCommerce
- Como criar o shortcode de logout de login do WooCommerce
- Como importar produtos WooCommerce
- Como configurar o preço do produto WooCommerce por kg
- Como criar produtos programaticamente WooCommerce
- Como criar um produto secreto WooCommerce
- Como criar WooCommerce após o redirecionamento de login para a página inicial
- Como criar o botão Adicionar ao carrinho do WooCommerce por ID do produto
- Como criar pedidos programaticamente WooCommerce
- Como adicionar o redirecionamento de página da minha conta no WooCommerce
- Como exportar produtos no WooCommerce
- Como adicionar SKU de produto no WooCommerce
- Como duplicar um produto no WooCommerce
- Como usar do_shortcode no WordPress (PHP)
- Como criar uma página de loja personalizada WooCommerce
- Como obter detalhes do pedido após o checkout no WooCommerce
- Como adicionar preço ao atributo no WooCommerce
- Como configurar frete grátis com gasto mínimo no WooCommerce