WooCommerce 使用 WP_Query 在价格范围内搜索产品

2023-11-29

我目前正在使用 Woocommerce 为 WordPress 网站构建自己的自定义高级搜索功能。您应该能够使用过滤器进行搜索:

  • Category
  • 最低/最高价格

我目前的进展附在下面。这使您能够在 URL 参数中指定类别 slugs。返回的将是匹配的帖子:

/**
 * Default arguments
 * @var array
 */

    $query = array(
        'post_status' => 'publish',
        'post_type' => 'product',
        'posts_per_page' => 10,
    );

/**
 * Category search
 */

    if(isset($_GET['categories']) && $_GET['categories']) {
        /**
         * Comma seperated --- explode
         * @var [type]
         */

            $categories = explode(',', $_GET['categories']);

        /**
         * Add "or" parameter
         */

            $query['tax_query']['relation'] = 'OR';

        /**
         * Add terms
         */

            foreach($categories as $category) {
                $query['tax_query'][] = array(
                        'taxonomy' => 'product_cat',
                        'field' => 'slug',
                        'terms' => $category,
                    );
            }
    }
/**
 * Fetch
 */

    $wp_query = new WP_Query($query);

现在,虽然这在您搜索类别时效果很好,但当您需要搜索价格时,它似乎变得更加复杂。

在原始 SQL 中,类似下面的内容可以工作:

SELECT DISTINCT ID, post_parent, post_type FROM $wpdb->posts
INNER JOIN $wpdb->postmeta ON ID = post_id
WHERE post_type IN ( 'product', 'product_variation' ) AND post_status = 'publish' AND meta_key = '_price' AND meta_value BETWEEN 200 AND 1000

我不知道如何使用 WP_Query 来实现它。


该解决方案受到@Niels van Renselaar 的启发,但更干净:

$query = array(
    'post_status' => 'publish',
    'post_type' => 'product',
    'posts_per_page' => 10,
    'meta_query' => array(
        array(
            'key' => '_price',
            'value' => array(50, 100),
            'compare' => 'BETWEEN',
            'type' => 'NUMERIC'
        )
    )
);

$wpquery = WP_Query($query); // return 10 products within the price range 50 - 100
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WooCommerce 使用 WP_Query 在价格范围内搜索产品 的相关文章

随机推荐

  • sscanf 修饰符 %Fd 扫描什么类型?

    我遇到过一些具有以下类型行的遗留代码 sscanf szBuff Fd Ff Fd Ff 有人见过 Fd 或 Ff 这样的修饰符吗 如果是这样 这意味着什么 我似乎找不到任何有关它的信息 代码编译并运行良好 C 说对于fscanf功能 C9
  • Python ctypes:访问冲突

    我正在尝试为第 3 方 C DLL 编写一个 Python 包装器 功能WolaInit初始化库并返回用于后续函数调用的句柄 import ctypes Load WOLA DLL into memory wolaDLL ctypes Wi
  • 将SQL文件导入mysql

    我有一个名为nitm 我还没有在那里创建任何表格 但我有一个 SQL 文件 其中包含数据库的所有必需数据 该文件是nitm sql这是在C drive 该文件大小约为 103 MB 我正在使用 wamp 服务器 我在 MySQL 控制台中使
  • 如何获取桌面位置?

    我在 Windows 上使用 Python 我希望脚本的一部分将文件从某个目录 我知道它的路径 复制到桌面 我用过这个 shutil copy txtName HOMEPATH desktop While txtName是 txt 文件的名
  • Pydantic 中的 parse_obj 字段是异构元组?

    在 Pydantic 类中 class Foo BaseModel bar str baz int 可以从元组导入 aaa 3 通过做类似的事情 key tr i for i key in enumerate fields TraceIte
  • qt qml 对象已经有一个 QQmlContext

    我想从本地获取 json 文件并使用以下命令将其发送到 QML include
  • 将二进制文件读入R

    我正在尝试将二进制文件读入 R 但该文件包含以二进制代码编写的数据行 因此 它没有属于一列的完整数据集 而是存储为数据行 我的数据如下所示 Bytes 1 4 int ID Byte 5 char response character By
  • 实体框架执行的精确sql查询

    这个问题似乎很清楚 但我会添加一个案例 using var context new MyEntities if context mytable Any row gt row myfield 2 do something here 我是实体框
  • 使用文件的内容将其重命名[重复]

    这个问题在这里已经有答案了 我有大约 20 MB 大小的二进制数据文件 文件名是随机的 全部以 AA 开头 在每个文件的内容中 它们在固定位置都有一个特定的字符串 在所有文件中从第 2086 个字节开始 我想读取由 2 个单词组成的字符串
  • 使用 Express,我可以自动修剪 req.body 中所有传入的 POSTed 字段吗?

    我开始使用表达形式使用我的 api Express 3 3 8 来修剪传入的 POSTed 字段的前导和尾随空白 但是 我相信要使用它 我必须将中间件中的表单字段和规则包含到我的路由中 如下所示 app post api test form
  • CSS 按钮永久按下状态

    我试图让一个按钮在点击时保持按下状态 然而 我正在使用的盒子阴影部分和 CSS 活动状态部分都让我感到困惑 我知道考虑到这段代码这是可行的 http jsfiddle net UEkBQ 这是我正在使用的代码 http jsfiddle n
  • 如何提取 Pandas 中的年、月、日? [复制]

    这个问题在这里已经有答案了 我有一个数据框 其中有一列名为 fecha dato 它存储日期如 2016 05 28 我想从 fecha dato 中以 int 形式提取 2016 05 和 28 作为名为年 月和日的新列 我使用迭代器方式
  • 切换变量以供外部使用

    The goal 在 a 中声明一些变量switch并在外部使用 问题 我不知道语法 我在想什么 为了解决我的问题 我想做这样的事情 但行不通 因为这只是一种哲学 public ActionResult Compare int id str
  • 在 C++ 中查找数组的模式(最常见的元素)

    我在面试问题中遇到过这个 我想看看 StackOverflow 将如何做到这一点 Bjarne Stroustrup 会怎么看待我的方式 有点罗嗦 但不幸的是我不知道如何让它变得更好 我知道你们会嘲笑我的愚蠢 template
  • 解析字符串antlr

    我将字符串作为解析器规则而不是词法分析器 因为字符串可能包含带有表达式的转义符 例如 The variable is variable string character character escapeSequence escapeSequ
  • CUDA 中的 std::vector 到数组

    有没有办法将 2D 矢量转换为数组以便能够在 CUDA 内核中使用它 它被声明为 vector
  • 比较 NSDate 的某些组件?

    我如何仅比较 2 的年月日组成部分NSDates 所以你应该这样做 NSCalendar calendar NSCalendar currentCalendar NSInteger desiredComponents NSDayCalend
  • 对于 React + TypeScript 变量:在组件的“props”中强制执行某些属性

    我想要一个变量 实际上是函数参数 但我简化了问题 它可以保存必须具有的 React 组件 例如aNumber number在它的属性之中 我不成功的尝试是 function MyComp props aNumber number aStri
  • OpenGL - 与未来的上下文共享现有纹理?

    我有一个应用程序 可以使用 FBO 扩展将帧绘制到纹理上 然后这些帧将显示到打开的不同窗口while应用程序正在运行 这意味着可以在创建任何新窗口的 OpenGL 上下文之前创建和池化纹理 并且wglShareLists叫做 目前我必须做g
  • WooCommerce 使用 WP_Query 在价格范围内搜索产品

    我目前正在使用 Woocommerce 为 WordPress 网站构建自己的自定义高级搜索功能 您应该能够使用过滤器进行搜索 Category 最低 最高价格 我目前的进展附在下面 这使您能够在 URL 参数中指定类别 slugs 返回的