WooCommerce En Son Görüntülenen Ürünler Kısa Kodu
Birkaç gün önce WooThemes ekibi, her WordPress web sitesinin her türlü ürünü çok kolay bir şekilde satmasına olanak tanıyan çok popüler WooCommerce eklentisinin 2. sürümünü duyurdu. Çok yetenekli Pippin Williamson'ın harika Easy Digital Downloads eklentisiyle çalışmaya daha alışkın olsam da, WooCommerce'de biraz daha derinlere inmek ve yeni işlevler oluşturmak için mevcut özellikleri nasıl kullanabileceğinizi size göstermek istedim. Bugün size en son görüntülenen ürünleri görüntüleyen bir kısa kodun nasıl oluşturulacağını açıklamak istiyorum. Son zamanlarda görüntülenen ürünler inanılmaz derecede güçlü bir özellik çünkü benim için bir nevi çok temel yapay zeka. Kullanıcıların daha önce görüntüledikleri ürünlere yalnızca birkaç saniye içinde kolayca geri dönmelerine olanak tanır. Son görüntülenen ürünleri görüntülemek için bir kısa kod kullanmak harika çünkü onu web sitenizin her yerine yerleştirebilirsiniz.
Normalde WPexplorer üzerinde bir eğitim oluşturduğumda yöntemi adım adım anlatırım, ancak bugünkü ders biraz daha uzun olduğundan, tüm süreci açıklamayı ve ardından kodun tamamını yorumlarla birlikte doğrudan kodun içine sunmayı tercih ediyorum.
Kısa kodla bunu yapmak
Bu nedenle, [woocommerce_recently_viewed_products per_page=”5″] kısa kodunu kaydedecek bir eklenti oluşturacağız. Neden bir eklenti oluşturmalısınız? Çünkü herhangi bir temayla kullanabileceğiniz bir özelliği saklamanın en kolay yolu budur. Bir temaya kısa kod kaydetmeye karar verirseniz kısa kod yalnızca tema etkinleştirildiğinde kullanılabilir. Bir eklentiyle, kullandığınız tema ne olursa olsun, özellik yine de kullanılabilir olacaktır. Bir diğer çok önemli şey ise WooCommerce dosyalarını asla değiştirmemenizdir.
Kurabiye sever misin? Gerçekten yaptım!
Varsayılan olarak WooCommerce, bir ziyaretçinin mağazada yaptıkları ve gördükleriyle ilgili önemli verileri saklayan bir çerez oluşturur. Ve bu tam olarak eklentimizi oluşturmak için ihtiyacımız olan veri türüdür. İhtiyacımız olan en önemli veriler $_COOKIE['woocommerce_recently_viewed'] adlı çerezlerde depolanır. Temel olarak bu çerez, en son görüntülenen ürünlerin kimliğini saklar. WooCommerce bu kimlikleri zaten kaydettiği için işimiz son olarak "post__in" sorgu özelliğini kullanarak iyi bir sorgu oluşturmak ve görüntülememiz gereken ürünlerin hala stokta olduğundan emin olmaktır. Bunu yapmak için "meta_query" sorgu özelliğine $woocommerce->query->stock_status_meta_query() yöntemini kullanmamız gerekir.
Eklentinin tam kodu
Kod oldukça basit olduğu için yorumları doğrudan koda ekledim ve adım adım bir eğitim yapmadım, ancak net olmayan bir şey varsa lütfen bir yorum yazın; her birini size açıklamaktan mutluluk duyarım kodun bir parçası!
<?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");