get_posts函数的产品过滤器

时间:2015-11-08 08:55:50

标签: wordpress woocommerce posts

为wooCommerce产品制作搜索功能并观察函数get_posts($ args = null)如何工作,我看到设置args如

      $args = array(
            's'                   => 'Some content',
            'post_type'           => 'product',
            'post_status'         => 'publish',
            'ignore_sticky_posts' => 1,
            'numberposts' => 999999, // set maximim value
            ...
        );

        $products_list = get_posts( $args );

1)参数' s'在post_content和post_title字段中进行搜索。如果有办法只搜索其中一个字段?

2)我发现设置'类别'参数到我需要的类别 - 它根本不起作用。 经过一些测试后,我发现评论了“猫”。 get_posts函数内部的参数使得' category'参数工作。 这个' cat'参数是?

3)在我的搜索中,我对价格,in_stock字段进行了过滤。为了实现这一点,我必须手动检查这两个标准。我的意思是我必须设置参数

' numberposts' => 999999,//将最大值设置为某个大数

并循环检查这些参数并跳过它们。我不能将这些参数设置为get_posts函数的过滤器?

如果我可以使用get_posts制作我需要的东西,或者是否有更好的工具,可能还有一些wooCommerce功能?

4)此外,我通过加入争论者来搜索sku:

            'meta_value'                   => '_sku',

看起来这个新条件作为AND工作,但我需要这个工作作为OR条件。 如果有办法可以吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

元查询数组可以采用"关系"的关键字。默认为" AND":

    $args = array(
        's'                   => 'Some content',
        'post_type'           => 'product',
        'post_status'         => 'publish',
        'ignore_sticky_posts' => 1,
        'numberposts'         => -1,
        'meta_query'          => array(
                'relation'    => 'OR',
                    array(
                    'key' => '_sku',
                    'value'   => 'some value',
                    'compare' => '='
                ),
                array(
                    'key'     => '_sku',
                    'value'   => 'another value',
                    'compare' => '='
                )
        );
    );

Alo,numberposts可以将-1作为值来返回所有帖子。