如何创建 WooCommerce 最近查看的产品简码

已发表: 2021-05-05

WooCommerce 最近查看的产品简码 您是否正在寻找一种使用简码显示最近查看的产品的方法? 在这篇文章中,我想向您展示如何创建 WooCommerce 最近查看的产品短代码。 默认情况下,WooCommerce 允许您使用小部件来显示客户最近查看的产品列表。

这个内置的解决方案非常有效,我们相信它很快就会成为古腾堡区块。

但是,您可能希望在新页面上显示相关产品。 这意味着您需要创建一个简码。

WooCommerce 最近查看的产品简码

在这个简短的教程中,我们将分享如何创建一个简单的短代码来显示最近查看的产品。 在继续之前,您需要注意此解决方案涉及处理代码。

如果您不熟悉处理代码,我们建议您联系合格的 WordPress 开发人员,以免弄乱您的网站。

您还应该创建一个子主题,以便您的更改不会在更新期间丢失。

让我们看看如何实现这一目标。

添加最近查看的产品简码的步骤

为了创建简码,我们将利用现有的 [产品] 简码并将产品 ID“传递”给它,而无需重新发明轮子。

或者,您可以创建一个将简码注册到主题中的插件。 我们将使用这种方法,因为它是最简单的。

您需要使用插件名称创建一个新文件夹。

如果您没有看到最近的产品,那是因为您仍然需要激活“最近查看的产品”小部件。 “woocommerce_recently_viewed”cookie 仅在使用最近查看的产品小部件时存储。

我们需要的最重要的数据存储在一个名为 $_COOKIE['woocommerce_recently_viewed'] 的 cookie 中。

如果需要,您可以包含自己的代码来跟踪/创建 cookie:

function custom_track_product_view() {

    if ( ! is_singular( 'product' ) ) {

        return;

    }

    global $post;

    if ( empty( $_COOKIE['woocommerce_recently_viewed'] ) )

        $viewed_products = array();

    else

        $viewed_products = (array) explode( '|', $_COOKIE['woocommerce_recently_viewed'] );

    if ( ! in_array( $post->ID, $viewed_products ) ) {

        $viewed_products[] = $post->ID;

    }

    if ( sizeof( $viewed_products ) > 15 ) {

        array_shift( $viewed_products );

    }

    // Store for session only

    wc_setcookie( 'woocommerce_recently_viewed', implode( '|', $viewed_products ) );

}

add_action( 'template_redirect', 'custom_track_product_view', 20 );

这是插件的完整代码:


function njengah_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", "njengah_woocommerce_recently_viewed_products");

添加代码后,在任意页面添加 [woocommerce_recently_viewed_products per_page=”5″]。

这是结果: 结果

结论

在这个简短的教程中,我们分享了如何使用简码显示最近查看的产品。

编辑 functions.php 文件时应该小心,因为如果你犯了错误,它会显示一个严重错误。

类似文章

  1. 100 多个提示、技巧和片段终极 WooCommerce 隐藏指南
  2. 如何通过示例在页面或帖子中使用 WordPress 简码
  3. 如何在 WooCommerce 中以最低消费设置免费送货