如何在WooCommerce WordPress版本5.0.3中显示最近查看的产品

时间:2019-02-13 07:28:06

标签: wordpress woocommerce

能否请您告诉我将WooCommerce中包含最近查看过的产品的代码

1 个答案:

答案 0 :(得分:0)

尝试在要显示的代码段下方添加

<div>
    <?php
    echo do_shortcode("[woocommerce_recently_viewed_products per_page='5']");
    ?>
</div>

在活动主题的functions.php中添加以下代码

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