当前位置: 首页 > 知识库问答 >
问题:

在Woocommerce 3上的WC_Product_Query中使用自定义元数据

鞠自明
2023-03-14

我尝试将meta_query作为数组的数组传递,每个数组包含3个键-值对,用于key、value和compare,就像在wp_query中一样。我还尝试将meta添加为meta:meta-field-name,这是实际字段的名称,只有没有'meta'前缀的名称本身,以及其他一些变体。但是这些方法都不起作用。有人能告诉我这个‘自定义参数支持’是不是只指元字段以外的自定义参数,还是我做错了什么?

共有1个答案

扶开诚
2023-03-14

要在wc_product_query(位于wp_postmeta表中)中处理产品自定义元数据,就像相关文档的最后一段中所解释的那样,它非常简单而且有效。

但是它不会像wp_query那样处理多个值和比较参数,如果您没有在扩展meta_query的函数中设置它们的话。

对于像_volume这样的自定义产品元键来处理产品以m3(立方米)为单位的体积,以下代码将启用带有特定compare参数“bigger than”的自定义meta_key

add_filter( 'woocommerce_product_data_store_cpt_get_products_query', 'handling_custom_meta_query_keys', 10, 3 );
function handling_custom_meta_query_keys( $wp_query_args, $query_vars, $data_store_cpt ) {
    $meta_key = '_volume'; // The custom meta_key

    if ( ! empty( $query_vars[$meta_key] ) ) {
        $wp_query_args['meta_query'][] = array(
            'key'     => $meta_key,
            'value'   => esc_attr( $query_vars[$meta_key] ),
            'compare' => '>', // <=== Here you can set other comparison arguments
        );
    }
    return $wp_query_args;
}

代码放在活动子主题(或活动主题)的function.php文件中。

现在,您只需根据特定的“compare”参数对此自定义_volume元键进行查询,以获取卷大于“0.2”的所有产品:

$queried_products = wc_get_products( array( '_volume' => '0.2' ) );

经过测试并起作用。

 类似资料:
  • 问题内容: 我试图将对象存储在redis中,redis是类的实例,因此具有功能,这是一个示例: 有没有一种方法可以将对象与函数一起存储在Redis中?我尝试过,但是只保留了属性。如何存储函数定义并能够执行以下操作: 打电话时如何获得? 先感谢您! 编辑 得到了修改MyClass.prototype并存储值的建议,但是类似这样的事情(setter / getter以外的功能)呢? 我正在尝试说明一个

  • 从这个链接中,我发现Google Cloud Dataflow使用Docker容器为其工作人员:Google Cloud Dataflow实例的图像 我看到有可能找到docker容器的映像名称。 但是,有没有一种方法可以获取这个docker容器(即从哪个存储库获取它?),修改它,然后指示我的数据流作业使用这个新的docker容器? 我问的原因是我们需要在我们的docker上安装各种C和Fortra

  • 我按照本教程创建了一个自定义。xib,我计划在表格视图的单元格中使用它: https://medium.com/@brianclouser/swift-3-creating-a-custom-view-from-a-xib-ecdfe5b3a960 以下是我创建的 .xib 类: 以前,我在情节提要中创建我的表视图单元格,但我已经意识到我想要一个更灵活的视图,以便我可以在应用的不同部分使用它,所以

  • 我正在使用ng文件上传将JPG文件上传到我的S3桶。 我还尝试了以下方法(在上面的代码中) 我已将自定义元数据作为 此外,S3上Bucket权限下的CORS配置是 以上代码和设置正常工作,JPG文件已成功上载,但不知何故未设置自定义元数据值。 成功上传后,我调用Lambda函数来调整JPG的大小,并将其存储在一个单独的bucket中。即使这部分工作正常,但我无法读取Lambda函数中的自定义元数据

  • 我一直在建立一个自定义搜索。该搜索具有许多下拉列表,用户可以将其留空,也可以从许多选项中进行选择。此数据保存在“wine note”自定义帖子类型的帖子中的自定义字段中。 到目前为止,它在某种程度上起了作用。我的搜索结果页面如下所示: 问题是,即使下拉选择器为空,搜索也会排除没有该特定自定义字段的任何帖子。 仅显示所有自定义字段(数据或非数据)的帖子。 因此,我稍微修改了我的代码,添加了一些if语

  • 我使用员工作为模型来处理用户名和密码。它确实重定向到正确的控制器和操作,但是$this- 雇员控制员 应用控制器 打印$this的\u r- 数组