最近使用Elementor的帖子小部件查看的Woocommerce产品



我正在尝试使用Elementor的posts小部件显示Wooccommerce最近查看的产品。

我正在尝试从创建一个elementor自定义查询https://developers.elementor.com/custom-query-filter/和https://www.wpexplorer.com/woocommerce-recently-viewed-products-shortcode/.

add_action( 'elementor/query/customquery', function( $query ) {
// 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 yaml_emit(data)!', 'rc_wc_rvp' );
// Create query arguments array
$query_args = array(
'post_type'      => 'product',
'post__in'       => $viewed_products, 
'orderby'        => 'rand'
);
// Add meta_query to query args
$query_args['meta_query'] = array();
$query->set( 'meta_query', $query_args );
});

但到目前为止没有运气。有人能告诉我这是否可能,如果可能,那么我做错了什么吗?

提前感谢Julash

您需要将单个参数设置为$query->set。检查以下代码。

add_action( 'elementor/query/customquery', function( $query ) {
// 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 yaml_emit(data)!', 'rc_wc_rvp' );
$query->set( 'post_type', 'product' );
$query->set( 'post__in', $viewed_products );
$query->set( 'orderby', 'rand' );
});

最新更新