Jak utworzyć skrótowy kod ostatnio oglądanych produktów WooCommerce?

Opublikowany: 2021-05-05

WooCommerce Ostatnio oglądane produkty Shortcode Szukasz sposobu na wyświetlenie ostatnio oglądanych produktów za pomocą shortcode? W tym poście chcę pokazać, jak stworzyć shortcode ostatnio oglądanych produktów WooCommerce. Domyślnie WooCommerce pozwala na użycie widżetu do wyświetlania listy produktów, które klient ostatnio oglądał.

To wbudowane rozwiązanie jest bardzo skuteczne i wierzymy, że wkrótce stanie się blokiem Gutenberga.

Możesz jednak chcieć wyświetlić powiązane produkty na nowej stronie. Oznacza to, że musisz utworzyć krótki kod.

WooCommerce Ostatnio oglądane produkty Shortcode

W tym krótkim samouczku pokażemy, jak stworzyć prosty shortcode do wyświetlania ostatnio oglądanych produktów. Zanim przejdziesz dalej, musisz pamiętać, że to rozwiązanie obejmuje obsługę kodu.

Jeśli nie znasz kodu obsługi, zalecamy skontaktowanie się z wykwalifikowanym programistą WordPress, aby nie zepsuć swojej witryny.

Powinieneś także utworzyć motyw potomny, aby Twoje zmiany nie zostały utracone podczas aktualizacji.

Zobaczmy, jak możesz to osiągnąć.

Kroki, aby dodać ostatnio oglądane produkty Shortcode

Aby stworzyć shortcode, skorzystamy z istniejącego shortcode [products] i „przekażemy” do niego identyfikatory produktów bez konieczności ponownego wymyślania koła.

Alternatywnie możesz utworzyć wtyczkę, która rejestruje krótki kod w motywie. Użyjemy tej metody, ponieważ jest najłatwiejsza.

Musisz utworzyć nowy folder z nazwą wtyczki.

Jeśli nie widzisz żadnych najnowszych produktów, oznacza to, że nadal musisz mieć aktywny widżet Ostatnio oglądane produkty. Plik cookie „woocommerce_recently_viewed” jest przechowywany tylko wtedy, gdy używany jest widżet ostatnio oglądanych produktów.

Najważniejsze dane, których potrzebujemy, są przechowywane w plikach cookie o nazwie $_COOKIE['woocommerce_recently_viewed'].

Możesz dołączyć własny kod do śledzenia/tworzenia plików cookie, jeśli chcesz:

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

Oto pełny kod wtyczki:


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

Po dodaniu kodu dodaj [woocommerce_recently_viewed_products per_page=”5″] na dowolnej stronie.

Oto wynik: wynik

Wniosek

W tym krótkim samouczku udostępniliśmy, w jaki sposób możesz wyświetlać ostatnio oglądane produkty za pomocą krótkiego kodu.

Powinieneś być ostrożny podczas edycji pliku functions.php, ponieważ jeśli popełnisz błąd, wyświetli on błąd krytyczny.

Podobne artykuły

  1. Ponad 100 porad, sztuczek i fragmentów Kompletny przewodnik po ukryciu WooCommerce
  2. Jak używać skrótów WordPress na stronach lub postach z przykładem
  3. Jak skonfigurować bezpłatną wysyłkę z minimalnymi wydatkami w WooCommerce?