Warning: Undefined array key "hu" in /home/host1693024/word-press.day/htdocs/www/875348534534.php on line 1660
WooCommerce Nemrég megtekintett termékek Shortcode

WooCommerce Nemrég megtekintett termékek Shortcode


Néhány nappal ezelőtt a WooThemes csapata bejelentette a nagyon népszerű WooCommerce bővítmény 2. verzióját, amely lehetővé teszi, hogy minden egyes WordPress webhely bármilyen terméket könnyen eladjon. Még ha jobban megszoktam a nagyszerű Easy Digital Downloads bővítményt, a nagyon tehetséges Pippin Williamsontól, szerettem volna egy kicsit mélyebbre menni a WooCommerce-ben, és megmutatni, hogyan használhatod a meglévő funkciókat új funkciók létrehozására. És ma szeretném elmagyarázni, hogyan hozhat létre rövid kódot, amely megjeleníti a nemrég megtekintett termékeket. A közelmúltban megtekintett termékek hihetetlenül erős funkció, egyszerűen azért, mert számomra egy nagyon alapvető mesterséges intelligencia. Lehetővé teszi a felhasználók számára, hogy pillanatok alatt könnyedén visszatérjenek a már megtekintett termékekhez. Az a tény, hogy rövid kódot használ a nemrég megtekintett termékek megjelenítéséhez, nagyszerű, mert bárhol elhelyezheti webhelyén.

Általában, amikor létrehozok egy oktatóanyagot a WPexploreren, lépésről lépésre magyarázom el a módszert, de mivel a mai leírás egy kicsit hosszabb, inkább elmagyarázom az egész folyamatot, majd a teljes kódot megjegyzésekkel közvetlenül a kódba küldöm.

Egy rövid kódon belül

Tehát létrehozunk egy beépülő modult, amely egy [woocommerce_recently_viewed_products per_page=”5″] rövid kódot fog regisztrálni. Miért kell bővítményt készíteni? Mert ez a legegyszerűbb módja egy olyan funkció tárolásának, amelyet bármilyen témához használhat. Ha úgy dönt, hogy rövid kódot regisztrál egy témába, a rövid kód csak akkor lesz elérhető, ha a téma aktiválva van. Beépülő modullal, függetlenül a használt témától, a funkció továbbra is elérhető lesz. Egy másik nagyon fontos dolog, hogy soha ne módosítsa a WooCommerce fájlokat.

Szereted a sütiket? Igazán!

A WooCommerce alapértelmezés szerint egy cookie-t hoz létre, amely fontos adatokat tárol arról, hogy a látogató mit csinál és lát az üzletben. És pontosan ilyen típusú adatokra van szükségünk a bővítményünk létrehozásához. A számunkra szükséges legfontosabb adatokat a $_COOKIE[‘woocommerce_recently_viewed’] nevű cookie-ban tároljuk. Ez a süti alapvetően a legutóbb megtekintett termékek azonosítóját tárolja. Mivel a WooCommerce már menti ezeket az azonosítókat, a mi feladatunk végre a megfelelő lekérdezés létrehozása a „post__in” lekérdezési attribútummal, és annak biztosítása, hogy a megjelenítendő termékek még mindig raktáron legyenek. Ehhez a $woocommerce->query->stock_status_meta_query() metódust kell használnunk a „meta_query” lekérdezési attribútumban.

A bővítmény teljes kódja

Mivel a kód meglehetősen egyszerű, a megjegyzéseket közvetlenül a kódba adtam, és nem készítettem lépésről lépésre bemutató oktatóanyagot, de ha valami nem világos, írjon megjegyzést, és örömmel elmagyarázom. kód része!

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