WooCommerce Kod Pendek Produk Dilihat Baru-baru ini
Beberapa hari yang lalu, pasukan WooThemes mengumumkan versi 2 pemalam WooCommerce yang sangat popular yang membolehkan setiap laman web WordPress menjual sebarang jenis produk dengan mudah. Walaupun saya lebih terbiasa menggunakan pemalam Muat Turun Digital Mudah yang hebat, oleh Pippin Williamson yang sangat berbakat, saya ingin mendalami WooCommerce dan menunjukkan kepada anda cara anda boleh menggunakan ciri sedia ada untuk mencipta fungsi baharu. Dan hari ini saya ingin menerangkan kepada anda cara membuat kod pendek yang memaparkan produk yang dilihat baru-baru ini. Produk yang dilihat baru-baru ini ialah ciri yang sangat berkuasa kerana ia, bagi saya, sejenis kecerdasan buatan yang sangat asas. Ia membolehkan pengguna kembali dengan mudah kepada produk yang telah mereka lihat dalam masa beberapa saat sahaja. Dan fakta untuk menggunakan kod pendek untuk memaparkan produk yang dilihat baru-baru ini adalah hebat kerana anda boleh meletakkannya di mana-mana di tapak web anda.
Biasanya apabila saya membuat tutorial di WPexplorer saya menerangkan langkah demi langkah kaedah, tetapi memandangkan tut hari ini agak panjang, saya lebih suka menerangkan keseluruhan proses dan kemudian memberikan anda kod penuh dengan komen terus ke dalam kod.
Melakukannya dalam kod pendek
Jadi, kami akan mencipta pemalam yang akan mendaftarkan [woocommerce_recently_viewed_products per_page=â5âł] kod pendek. Mengapa membuat pemalam? Kerana ini adalah cara paling mudah untuk menyimpan ciri yang boleh anda gunakan dengan mana-mana tema. Jika anda memutuskan untuk mendaftarkan kod pendek ke dalam tema, kod pendek akan tersedia hanya jika tema itu diaktifkan. Dengan pemalam, tidak kira tema yang anda gunakan, ciri ini akan tetap tersedia. Satu lagi perkara yang sangat penting, ialah anda tidak boleh mengubah suai fail WooCommerce.
Adakah anda suka biskut? Saya betul-betul buat!
Secara lalai WooCommerce mencipta kuki yang menyimpan data penting tentang perkara yang dilakukan dan dilihat oleh pelawat di kedai. Dan itulah jenis data yang kami perlukan untuk mencipta pemalam kami. Data paling penting yang kami perlukan disimpan ke dalam kuki yang dipanggil $_COOKIE[âwoocommerce_recently_viewedâ]. Pada asasnya kuki ini menyimpan ID produk terakhir dilihat. Memandangkan WooCommerce sudah pun menyimpan ID ini, tugas kami akhirnya adalah untuk mencipta pertanyaan yang baik menggunakan atribut pertanyaan âpost__inâ dan untuk memastikan produk yang kami perlu paparkan masih dalam stok. Untuk berbuat demikian, kita perlu menggunakan kaedah $woocommerce->query->stock_status_meta_query() ke dalam atribut pertanyaan âmeta_queryâ.
Kod lengkap pemalam
Oleh kerana kod itu agak mudah, saya menambah komen terus ke dalam kod, dan saya tidak melakukan tutorial langkah demi langkah, tetapi jika ada yang tidak jelas sila tulis komen dan saya akan lebih gembira untuk menerangkan anda setiap sebahagian daripada kod!
<?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");