为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条件。 如果有办法可以吗?
谢谢!
答案 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作为值来返回所有帖子。