17713433920 info@mac163.com
WooCommerce最近查看的产品简码插件
WooCommerce最近查看的产品简码插件

几天前,WooThemes团队宣布了非常受欢迎的WooCommerce插件的版本2,该插件允许每个WordPress网站都非常轻松地出售任何类型的产品。即使我更习惯使用很棒的Easy Digital Downloads插件,也很有才华的Pippin Williamson,我想更深入地了解WooCommerce,并向您展示如何使用现有功能来创建新功能。今天,我想向您解释如何创建显示最近查看过的产品的简码。最近浏览的产品是一项难以置信的强大功能,仅因为对我而言,它是一种非常基础的人工智能。它使用户可以在短短几秒钟内轻松返回到已经查看过的产品。使用简码显示最近查看过的产品的事实非常棒,因为您可以将其放置在网站的任何位置。

通常,当我在创建教程时,我会逐步解释该方法,但是由于今天的tuto有点长,我更喜欢解释整个过程,然后为您提供完整的代码,并将注释直接添加到代码中。

用短代码完成

因此,我们将创建一个插件,该插件将注册一个[woocommerce_recently_viewed_products per_page =“ 5”]短代码。为什么要创建插件?因为这是存储可用于任何主题的功能的最简单方法。如果您决定将短代码注册到主题中,则只有在激活主题后,该短代码才可用。使用插件,无论您使用的主题是什么,该功能仍然可用。另一个非常重要的事情是,永远不要修改WooCommerce文件。

你喜欢饼干吗?我真的是!

默认情况下,WooCommerce创建一个cookie,该cookie存储有关访客在商店中所做和所见的重要数据。这正是我们创建插件所需的数据类型。我们需要的最重要的数据存储在名为$ _COOKIE [‘woocommerce_recently_viewed’]的cookie中  。基本上,此cookie存储最近查看的产品的ID。由于WooCommerce已经保存了这些ID,因此我们的工作最终是使用“ post__in ”查询属性来创建良好的查询,并确保需要显示的产品仍然有库存。要做到这一点,我们需要使用  $ woocommerce->查询- > stock_status_meta_query()方法进入“ meta_query ”查询属性。

插件完整代码

由于代码非常简单,因此我将注释直接添加到了代码中,并且没有进行逐步教程,但是如果不清楚,请写注释,并且我很乐意为您解释每个注释代码的一部分!

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

微信二维码

微信扫描二维码联系我们!
我们在微信上24小时期待你的声音
提供外贸路由器设备产品,轻松翻墙,解答:WP主题推荐,WP网站建设,Google SEO,百度SEO,专业服务器环境搭建等!


需要提供WordPress主题/插件的汉化服务可以随时联系我们!另外成品WordPress网站以及半成品WordPress网站建设,海外Google SEO优化托管服务,百度SEO优化托管服务,Centos/Debian服务器WP专用环境搭建,WP缓存服务器搭建,我们都是你的首选,拥有多年WP开源程序服务经验,我们一直在坚持客户体验,没有最好,只有更好!
回到顶部