You need to enable JavaScript to run this app. WordPress中如何判断页面为ID8194父页的子级及同级以隐藏代码
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中如何判断页面为ID8194父页的子级及同级以隐藏代码

页面代码隐藏的判断逻辑调整方案

原逻辑的失效原因

你当前使用的if ( get_post_field( 'post_parent' ) != 8194 )判断,仅会校验当前页面的直接上级ID,只能命中ID为8194的第一层直属子页面。由于post_parent字段只存储当前页面的直接上级信息,当页面嵌套到更深层级(也就是你提到的所有需要隐藏的同层级兄弟页面)时,字段值就不再是8194,原逻辑自然无法识别并触发隐藏效果。

调整的核心思路

跳出只判断直接父级的局限,沿着页面层级关系向上全链路追溯,只要当前页面的任意一级祖先节点是ID为8194的页面,就将其纳入隐藏范围,即可覆盖整棵8194分支下的所有页面,不受嵌套深度的影响。

具体实现代码

WordPress自带get_post_ancestors()函数,会返回当前页面从直接父级到顶级父级的所有祖先页面ID列表,基于该函数调整判断逻辑即可:

// 获取当前页面的全量祖先ID列表
$current_page_ancestors = get_post_ancestors( get_the_ID() );
// 定义隐藏规则:当前页面属于8194整棵分支(含8194本身)时隐藏展示代码
$should_hide_code = in_array( 8194, $current_page_ancestors ) || get_the_ID() == 8194;
// 替换原判断逻辑:仅在不需要隐藏时输出目标展示代码
if ( ! $should_hide_code ) {
    // 此处放置原本要展示的代码片段
}

规则灵活调整

  • 如果不需要在8194页面本身隐藏代码,仅需要在它的所有后代页面隐藏,删掉判断条件里的get_the_ID() == 8194即可:
$current_page_ancestors = get_post_ancestors( get_the_ID() );
$should_hide_code = in_array( 8194, $current_page_ancestors );
if ( ! $should_hide_code ) {
    // 目标展示代码
}

方案说明

  • get_post_ancestors()直接读取WordPress存储的页面父子关系数据,不受页面别名、路径调整的影响,比基于URL匹配的判断逻辑更稳定。
  • 无论页面嵌套多少层级,只要归属8194的分支,都会被准确识别,不会遗漏任何层级的子、孙、曾孙页面。

内容的提问来源于stack exchange,提问作者leandroprz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.10 14:06:04