使用 Woocommerce 中的元查询从任何地方排除特定产品

2024-02-23

我想从我的商店页面以及我的主页中排除来自给定城市的产品,在主页中我显示来自 flatsome UX Builder 的 woocommerce 商店小部件(不确定它是一个小部件)的产品。

给定城市的产品不会出现在我的商店页面中,但它们仍然出现在我的主页中。

add_filter( 'pre_get_posts', 'custom_pre_get_posts_query' );
function custom_pre_get_posts_query( $q ) {
    if ($q->is_main_query())
    {
        $meta_query = $q->get('meta_query');
        $meta_query[] = array(
            'key'=>'city',
            'value' => 'Cassis',
            'compare'=>'NOT EXISTS',
            );
        $q->set('meta_query',$meta_query);

        remove_filter( 'pre_get_posts', 'custom_pre_get_posts_query' );
    }
}

任何想法?


而不是使用pre_get_posts过滤钩meta_query在产品循环中,您可以使用专用的woocommerce_product_query_meta_query过滤钩。

现在,对于您的问题,它可能是使用的小部件或短代码,因此还有一些专用的挂钩。

As the meta_query对于 3 个挂钩函数来说是类似的,您可以在自定义函数中设置它并以这种方式在 3 个挂钩函数中调用它:

// The meta query in a function
function custom_meta_query( $meta_query ){
    $meta_query[] = array(
        'key'=>'city',
        'value' => 'Cassis',
        'compare'=>'NOT EXISTS',
    );
    return $meta_query;
}

// The main shop and archives meta query
add_filter( 'woocommerce_product_query_meta_query', 'custom_product_query_meta_query', 10, 2 );
function custom_product_query_meta_query( $meta_query, $query ) {
    if( ! is_admin() )
        return custom_meta_query( $meta_query );
}

// The shortcode products query
add_filter( 'woocommerce_shortcode_products_query', 'custom__shortcode_products_query', 10, 3 );
function custom__shortcode_products_query( $query_args, $atts, $loop_name ) {
    if( ! is_admin() )
        $query_args['meta_query'] = custom_meta_query( $query_args['meta_query'] );
    return $query_args;
}

// The widget products query
add_filter( 'woocommerce_products_widget_query_args', 'custom_products_widget_query_arg', 10, 1 );
function custom_products_widget_query_arg( $query_args ) {
    if( ! is_admin() )
        $query_args['meta_query'] = custom_meta_query( $query_args['meta_query'] );
    return $query_args;
}

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

这应该有效...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Woocommerce 中的元查询从任何地方排除特定产品 的相关文章

  • 使用“INSERT ... ON DUPLICATE KEY UPDATE”插入多条记录

    我的表结构 table marks 我的目标 我想用条件插入或更新多条记录 我目前正在通过此查询进行检查 第一步 SELECT FROM marks WHERE student 115 AND param 1 第二步 if records
  • 获取今天的科普特日期

    我正在寻找获取今天的科普特日期与任何代码类型类似php or javascript在我的网站标题中显示科普特日期 我需要阿拉伯语或英语版本 我试图找到它 但没有找到类似的英文内容 参考 http www copticchurch net e
  • 将 OAuth WRAP 访问令牌直接保存在客户端计算机上的 cookie 中吗?

    我计划建立一个可以访问 oauth 包装框架的网站 我正在考虑将访问令牌按原样存储在客户端计算机上 我不想在服务器上维护临时令牌等数据库 我应该做吗 或者我应该加密它 首先 为什么他们不使用 OAuth 2 0 您可以将 OAuth 凭据存
  • 如何在 CakePHP 中“验证”人名?

    我有一个 PHP 脚本 应该检查 有效 的人名 但最近破解了带有空格的名称 因此我们向验证器添加了空格 除了这样做之外 有没有办法向 CakePHP 的验证器添加黑名单以阻止所有 无效 字符 而不是允许 有效 字符 注意 我 通常 知道如何
  • 在laravel中组合两个不同的无关系数据库表查询进行分页

    我的数据库中有两个不相关的表 我需要将它们合并 以便我可以将其放在我的搜索视图中 但我不知道是否可能 这是我的代码 这news and season表不相关 但它们具有相似的列 我试图将其放入一个对象中以便于分页 是否可以 search r
  • 解析错误:语法错误,意外的 T_RETURN [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 遇到这个问
  • Zend Framework 中的动态默认模块

    有谁知道在 Zend Framework 中动态设置默认模块并且不会遇到命名空间问题的方法 例如 我想要做的是有一个允许加载的模块表 其中一个设置为默认模块 例如 我可能有 admin blog calendar 作为可以加载的模块 如果我
  • div 中的文本字符有限,添加“阅读更多”链接并在单击链接时显示所有字符

    我有一个 div 里面有文本 使用 PHP 和 MySQL 显示 结构如下 div class description p Here is a lot of text p div 我想在 p 标签内的文本超过 100 个字符时显示 阅读更多
  • Facebook iFrame 应用程序 - 摆脱垂直滚动条?

    我已经转换了一个 Facebook 应用程序 http apps facebook com video preferans 从 FBML 到 iFrame 使用 PHP SDK 现在显示的垂直滚动条与我之前显示的内容数量相同 一个徽标 一个
  • Cakedc.users => 总是重定向到主页

    我在新的 Cakephp 安装上使用插件 CakeDC Users 我有两个控制器 PagesController php CardsController php Pages 有 1 个操作 Beta 它是主页 Cards 有两个操作 索引
  • 带 url 参数的 Laravel post 路由

    我面临着幼虫路由的大墙 我似乎找不到解决方案 我在视图模板中有此表单
  • Composer 无法获取 github

    今天 我尝试通过运行来安装 Laravelcomposer create project laravel laravel 5 1 myproject prefer dist我收到此错误 Could not fetch https api g
  • php oracle客户端oci8安装出现什么问题

    我尝试了安装 PHP Oracle 客户端的所有过程 1 我安装了客户端版本8和32位 2 我在php ini中取消了oci的注释 3 重新启动Wamp 4 不确定是否真的安装 但我在 php ini 中得到了引用 5 但仍然无法连接 泰汉
  • 扩展构建器中的“映射到现有表”显示 TYPO3 中的奇怪问题

    在我的扩展中MyExt 我映射了模型Page to pagesTYPO3 中的表 首先它向我展示了type mismatch错误 无论如何我继续保存它 会发生以下情况 我的页面树变成这样 我的新记录表单仅显示 UID 而不显示标题 My P
  • 为什么这评估为 true

    为什么这评估结果为真
  • 使用 MYSQL 将 h:mm pm/am 时间格式插入数据库

    我正在尝试将以 h mm am pm 格式写入的时间插入到存储为标准 DATETIME 格式 hh mm ss 的数据库中 但我不知道如何将发布的时间转换为标准格式所以数据库会接受它 这是我到目前为止一直在尝试的 title POST in
  • if/else 简写来定义变量

    我很难理解 if else 的 php 简写是如何描述的here https stackoverflow com questions 20233207 php if shorthand and echo in one line possib
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子
  • 通过 Sparkpost 发送 iCal 邀请

    我正在尝试使用 SparkPost 通过电子邮件以附件形式发送日历邀请 但收到电子邮件后邀请不会打开 我使用两个文件 calendarinvite php 来创建邀请 使用 Sendemail php 来发送电子邮件 calendarinv
  • 如何将变量插入 PHP 数组?

    我在网上查了一些答案 但都不是很准确 我希望能够做到这一点 id result id info array id Example echo info 0 这有可能吗 您需要的是 不推荐 info array id Example varia

随机推荐

  • 如何在独立的 Turbine 应用程序中激活 /turbine.stream 端点

    我正在尝试创建一个独立的应用程序来从其他应用程序收集 Hystrix 流 但它并没有暴露 turbine stream默认端点 我确信我的项目中缺少什么 Spring Boot 2 0 4 RELEASE Spring Cloud Finc
  • 有没有办法关闭 WebDriver 或 Protractor 中的选项卡?

    有没有办法通过 Protractor 或 WebDriver 物理关闭选项卡 我问是因为虽然我知道如何切换标签 https stackoverflow com questions 26798020 protractor switch to
  • 如何将多个图像上传到 Firebase Storage 并返回多个 downloadURL

    我们正在开发一个简单的电子商务应用程序 我们需要上传多个产品图片 使用 Vuejs 和 Vue Croppa 我们需要将图像上传到 firebase 存储 检索下载 URL 然后在将该产品添加到数据库时将这些 URL 包含在数组中
  • 使用从 ramda 中的原始属性派生的新属性来转换对象

    变换以下对象的最简单方法是什么 original name bob age 24 result name bob age 24 description bob is 24 years old 我可以使用 Lens 来更新单个属性 例如增加年
  • 如何在php中解密sha1?

    下面我使用 sha1 加密了一个字符串变量 现在我希望使用 sha1 函数解密数据 但我要去某个地方 请有人站出来以正确的方式指导我 下面是我的代码 我得到这样的输出 tiger 46e3d772a1888eadff26c7ada47fd7
  • 类型别名的范围是什么?

    Typescript 类型别名的范围是什么 我有这个别名 我想我可能想以某种方式在全球范围内声明它 type ResouceResult
  • 熊猫和 AWS Lambda

    有人有与 AWS Lambda 兼容的完全编译版本的 pandas 吗 搜索了几个小时后 我似乎找不到我要找的东西 而且关于这个主题的文档也不存在 我需要在 lambda 函数中访问该包 但是我未能成功地使该包正确编译以在 Lambda 函
  • 如何从 json 文件中删除 json 对象?

    我想从此 json 文件中删除年龄using org json or com googlecode json simple 假设这个 json 对象位于文件 test json 中 age 100 name mkyong com messa
  • 现代浏览器仍然限制并行下载吗?

    In 这篇雅虎文章 http yuiblog com blog 2007 04 11 performance research part 4 从 2007 年开始 作者认为静态资源应该分布在不同的主机名上 因为浏览器遵循 HTTP 1 1
  • 组件输入更改父级中传递的值

    据我了解 Input组件中的字段应该是单向的 父级到子级 但是 我有一个值要传递给Input然后在组件中修改它 但我注意到它在父级中也发生了变化 这对我来说是有道理的 因为对象是通过引用传递的 但我猜这意味着 Angular 设置的整个 单
  • 针对 Java 5 和 Java 6 的即时、内存中 Java 代码编译

    如何从 Java 5 和 Java 6 中的任意字符串 在内存中 编译 Java 代码 加载它并在其上运行特定方法 预定义 在你对此进行讨论之前 我查看了现有的实现 大多数依赖于 Java 6 编译器 API 那些不这样做的人 只能依靠技巧
  • Heroku:帐户无权访问应用程序

    我试图git pull heroku master 但我得到了 Your account email protected cdn cgi l email protection does not have access to app name
  • tailwindcss:强制 tailwind 使用兼容的 RGB 语法?

    我正在使用 tailwindcss 移植一个应用程序以与 IE11 一起使用 不幸的是 tailwindcss 坚持使用现代技术生成颜色W3C CSS 颜色模块级别 4 rgb https drafts csswg org css colo
  • 加载新键盘时从数字键盘上删除“完成”按钮

    好吧 我会尽力解释这一点 我有一个 iPhone 应用程序 它有一个文本字段 用户只能输入数字 那里不是问题 但是 数字键盘上没有完成按钮 所以我无法让它消失 我可以制作一个按钮 用户按下该按钮即可关闭键盘 但我宁愿有一个完成按钮 因为屏幕
  • Eigen static libaligned_free“双重释放或损坏”

    这是一个延续较早的帖子 https stackoverflow com questions 70788173 eigen static lib memory align 但这一次希望有一个更好的例子 设置向量时 这个简单的测试会崩溃 我正在
  • 使用 DotNetZip 库解压包含非 ASCII 字符的文件

    我正在尝试使用 DotNetZip 库解压缩文件 该文件包含带有丹麦语字符 的文件夹和文件 TotalCommander 7Zip Windows 自己的 zip 都能正确提取文件 但 DotNetZip Library 会破坏丹麦语字符
  • MVC4 FoolProof 数据注释 - 如何检查该字段不等于零?

    我正在尝试使用 MVC Foolproof 库来验证我的模型并分别显示错误消息 但是 当我使用万无一失的验证时 单击提交按钮时 即使常规验证也不会显示 我的要求是我有一个数字文本框 它不应该为空或零 文本框值是根据从前面的下拉列表中选择的值
  • 如何将变量从控制器传递到视图 joomla mvc

    根据此示例 如何将变量从 joomla 子控制器传递到视图 class MYControllerControllerParser extends JController public function construct default a
  • 如何仅序列化.Net 中的某些属性?

    这是一个 Web 项目 所以我有几个继承自 Web UI 的类 我只想序列化非常特殊的属性 基本上 只有本地属性 我知道 XMLIgnore 属性可以放置在属性上以忽略项目 但这在我的上下文中不起作用 因为这需要修改一堆我真的不想修改的东西
  • 使用 Woocommerce 中的元查询从任何地方排除特定产品

    我想从我的商店页面以及我的主页中排除来自给定城市的产品 在主页中我显示来自 flatsome UX Builder 的 woocommerce 商店小部件 不确定它是一个小部件 的产品 给定城市的产品不会出现在我的商店页面中 但它们仍然出现