在使用 Avada 主题搭建网站时,我们经常会遇到这样的需求:某个板块只想在特定的页面显示,或者想在特定的页面隐藏。这时候就需要用到 Avada 自带的 Conditional Rendering(条件渲染) 功能。

很多新手在第一次使用这个功能时,容易被界面上的 AND 和 OR 搞晕,或者在 Post ID 里填了多个数字发现不生效。这篇文章就结合实际业务场景,把整个配置思路和落地方法一次性讲透。

场景一:只在非产品页面且排除特定ID时显示

假设我们有一个促销板块,希望在不是产品页,并且页面 ID 不是 3343 的时候才显示。很多人的第一反应是在面板里这样设置:

  • 条件一:Post Type 选择 Not Equal To,值选 Product
  • 条件二:Post ID 选择 Equal To,值填 3343
  • 两者之间用 OR 连接

这样是错的。 因为用了 OR,只要页面 ID 是 3343,哪怕它是产品页,板块也会显示,这就违背了初衷。

正确的设置方法

记住一个核心原则:排除类的条件,永远用 AND 连接。

正确的设置应该是:

  1. 添加条件一:Post Type 选择 Not Equal To,值选 Product
  2. 添加条件二:Post ID 选择 Not Equal To,值填 3343
  3. 两个条件组之间的连接符选择 AND

这样一来,只有当页面既不是产品类型,又不是 ID 3343 时,两个排除条件同时成立,板块才会显示,逻辑完全正确。

为什么填多个 ID 不生效

你可能会发现,在 Post ID 的输入框里填 3343, 3344 这样的多个 ID 是不生效的。这是因为 Avada 的 Post ID 条件只支持单个数字,不支持逗号分隔。

如果需要排除多个 ID,正确的做法是继续添加独立的条件组,每一个 ID 单独写一条 Not Equal To,然后全部用 AND 连接。虽然条件数量会变多,但逻辑最清晰,结果也最准确。

场景二:只在父级不是某个页面的情况下显示

这是一个非常典型的业务需求:比如你想让某个板块在大部分页面显示,但唯独不想让它在“Applications”这个父页面及其所有子页面下显示。

原生限制

Avada 的条件渲染面板里,没有“父级页面是谁”这个选项。它只认当前页面自身的属性,比如页面类型、页面 ID。所以不能直接选一个“父页面”条件来实现。

落地执行方案

最稳妥、免代码的操作方式是:

第一步,去 WordPress 后台找到 Applications 这个页面的 ID,再找出它下面所有子页面的 ID。

第二步,回到 Avada 条件渲染面板,为每一个子页面 ID 添加一条条件:

  • Post ID 选择 Not Equal To,值填子页面 A 的 ID
  • Post ID 选择 Not Equal To,值填子页面 B 的 ID
  • Post ID 选择 Not Equal To,值填子页面 C 的 ID
  • 以此类推,把所有子页面 ID 都列上去

第三步,所有条件组之间全部选择 AND 连接。

这样,只有当当前页面不是这些子页面中的任何一个时,板块才会显示。虽然子页面多的时候需要手动多加几条条件,但胜在所见即所得,不需要改代码,配置完清一下缓存就能立刻验证效果。

如果子页面数量特别多,逐一添加会比较繁琐。这时候可以考虑用代码方案,通过 WordPress 的 $post->post_parent 判断父级 ID,再结合 Avada 的钩子过滤板块输出。但这需要修改子主题的 functions.php,适合有一定开发基础的用户。

核心口诀与最终效果

把上面的内容浓缩成两句话:

  • 排除类条件,一律用 AND 连接。 用 OR 会让排除逻辑失效。
  • Post ID 一次只能填一个。 要排除多个,就多条 Not Equal To 加 AND 拼接。

配置完成后,记得清除页面缓存和服务器缓存再测试。Avada 官方文档也特别提示过,缓存可能会干扰条件渲染的结果,导致你看到的是旧的显示状态,误以为设置没生效。

按照这套方法落地,你就能精准控制板块的显示范围,无论是排除产品页、排除指定 ID,还是排除某个父页面下的所有子页面,都能通过 AND 拼接多个 Not Equal To 条件稳定实现。