我正在尝试根据逻辑条件隐藏我网站上的产品及其自定义字段值(由高级自定义字段插件提供 - ACF )。
我引用了很多关于根据特定条件排除产品,使用pre_get_posts
,woocommerce_product_query_tax_query
和woocommerce_product_query
挂钩进行测试的文章。所有这些都不允许我访问ACF值,以便我可以过滤$tax_query
条款。
我的最终目标是隐藏在其自定义字段中设置日期并且该日期已过去的特定产品。我使用get_field('event_date');
函数访问自定义字段。
我正在寻找帮助我开发此代码的人根据其高级自定义字段值过滤产品。
到目前为止我已经尝试了很多,我看了var_dumps
看看我能用什么,但事实是我仍然处于方方面面。这是我可笑的进展:
add_action('woocommerce_product_query', 'filter_past_events');
function filter_past_events($q)
{
// Return is event_date variable is not set
if (get_field('event_date')) {
$eventDate = new DateTime(get_field('event_date')); // Format ISO-8601 (YYYY-MM-DD)
$now = new DateTime();
if ($eventDate < $now) {
// event is in the past
}
}
}
到目前为止,我已提到:
•Exclude products from a particular category on the shop page
•filter-woocommerce-products-based-on-custom-product-attribute-value
答案 0 :(得分:0)
function custom_pre_get_posts_query($q) {
$meta_query = $q->get('meta_query');
$meta_query[] = array(
'key' => 'key',
'value' => 'value',
'compare' => '!='
);
$q->set('meta_query', $meta_query);
}
add_action('woocommerce_product_query', 'custom_pre_get_posts_query');