Vor ein paar Tagen, WooThemes-Team angekündigt Version 2 des sehr beliebten WooCommerce-Plugins, das jeden einzelnen ermöglicht WordPress Website, um alle Arten von Produkten sehr einfach zu verkaufen. Auch wenn ich es gewohnt bin mit dem tollen Easy Digital Downloads Plugin zu arbeiten, von den sehr talentierten Pippin Williamson, wollte ich etwas tiefer in WooCommerce einsteigen und dir zeigen, wie du vorhandene Features nutzen kannst, um neue Funktionen zu erstellen. Und heute möchte ich Ihnen erklären, wie Sie einen Shortcode erstellen, der kürzlich angesehene Produkte anzeigt. Kürzlich angesehene Produkte sind eine unglaublich leistungsstarke Funktion, einfach weil es für mich eine Art sehr grundlegende künstliche Intelligenz ist. Es ermöglicht Benutzern, in Sekundenschnelle zu Produkten zurückzukehren, die sie bereits angesehen haben. Und die Tatsache, dass Sie einen Shortcode verwenden, um kürzlich angesehene Produkte anzuzeigen, ist großartig, da Sie ihn überall auf Ihrer Website platzieren können.
Normalerweise erkläre ich beim Erstellen eines Tutorials auf WPexplorer Schritt für Schritt die Methode, aber da das heutige Tut etwas länger ist, ziehe ich es vor, den gesamten Prozess zu erklären und Ihnen dann den vollständigen Code mit Kommentaren direkt im Code zur Verfügung zu stellen.
Machen Sie es innerhalb eines Shortcodes
Wir werden also ein Plugin erstellen, das sich registriert [woocommerce_recently_viewed_products per_page=”5″] Kurzcode. Warum ein Plugin erstellen? Weil es der einfachste Weg ist, eine Funktion zu speichern, die Sie mit jedem Thema verwenden können. Wenn Sie sich entscheiden, einen Shortcode in einem Theme zu registrieren, ist der Shortcode nur verfügbar, wenn das Theme aktiviert ist. Mit einem Plugin ist die Funktion unabhängig vom verwendeten Thema weiterhin verfügbar. Eine andere sehr wichtige Sache ist, dass Sie WooCommerce-Dateien niemals ändern sollten.
Magst du Kekse? Ich wirklich!
Standardmäßig erstellt WooCommerce ein Cookie, das wichtige Daten darüber speichert, was ein Besucher im Shop tut und sieht. Und genau diese Art von Daten benötigen wir, um unser Plugin zu erstellen. Die wichtigsten Daten, die wir benötigen, werden in Cookies namens . gespeichert $_COOKIE[‘woocommerce_recently_viewed’]. Grundsätzlich speichert dieses Cookie die ID der zuletzt angesehenen Produkte. Da WooCommerce diese IDs bereits speichert, besteht unsere Aufgabe darin, endlich die gute Abfrage mit dem „post__in” Abfrageattribut und um sicherzustellen, dass die Produkte, die wir anzeigen müssen, noch auf Lager sind. Dazu benötigen wir die $woocommerce->query->stock_status_meta_query() Methode in die „meta_query” Abfrageattribut.
Der vollständige Code des Plugins
Da der Code ziemlich einfach ist, habe ich die Kommentare direkt in den Code eingefügt und ich habe keine Schritt-für-Schritt-Anleitung gemacht, aber wenn etwas nicht klar ist, schreibe bitte einen Kommentar und ich erkläre dir gerne jeden Teil des Codes!
<?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");