Woocommerce - 根据自定义字段值(ACF)禁用或隐藏产品

时间:2018-04-25 12:37:34

标签: php wordpress woocommerce

我正在尝试根据逻辑条件隐藏我网站上的产品及其自定义字段值(由高级自定义字段插件提供 - ACF )。

我引用了很多关于根据特定条件排除产品,使用pre_get_postswoocommerce_product_query_tax_querywoocommerce_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

1 个答案:

答案 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');