我正在尝试使用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' );
});