未定义的变量:使用Wordpress.org代码段时的is_tree

如何解决未定义的变量:使用Wordpress.org代码段时的is_tree

在键入此内容时,我被告知在Stackoverflow中有许多类似短语的问题及其答案-但是阅读了许多其他查询后,我仍然无法解决我似乎遇到的关于错误的问题有关未定义变量的消息。

说明。 。

我在子主题函数文件中使用代码片段来测试子页面,这些子页面是从以下Wordpress.org参考页获取的: (https://developer.wordpress.org/reference/functions/is_page/中的代码段4)。

我在代码下方添加了2行,以:A)定义$pid是什么,以及B)一条if语句,该语句定义了我要调用的子页面(请参见下面的代码的最后两行):

 * Check whether we are on this page or a sub page
 *
 * @param int $pid Page ID to check against.
 * @return bool True if we are on this page or a sub page of this page.
 */
function wpdocs_is_tree( $pid ) {      // $pid = The ID of the page we're looking for pages underneath
    $post = get_post();               // load details about this page
 
    $is_tree = false;
    if ( is_page( $pid ) ) {
        $is_tree = true;            // we're at the page or at a sub page
    }
 
    $anc = get_post_ancestors( $post->ID );
    foreach ( $anc as $ancestor ) {
        if ( is_page() && $ancestor == $pid ) {
            $is_tree = true;
        }
    }
    return $is_tree;  // we arn't at the page,and the page is not an ancestor
}
?>

<?php $pid = is_page(array('my-newcomen','the-piston-engine-revolution')) ?>
<?php if (is_page($is_tree) && !is_paged() && !is_page('society-business','journal-archive')) {?> 

该代码可以正常运行一段时间,但现在网站变得非常缓慢。安装了“查询监视器”插件后,我可以看到要清除/调试的各种php错误-这就是其中之一。

错误消息表明未定义第579行(这是上面代码<?php if (is_page($is_tree) && !is_paged() && !is_page('society-business','journal-archive')) {?>的最后一行)中的变量$ is_tree。

php的这一领域超出了我目前的理解范围-但对我来说,$is_tree变量被定义$is_tree = false;$is_tree = true;。 。 。但是显然不是这样!

如果有人可以看一下上面的代码并让我知道,我将非常感谢

A)为什么将变量视为未定义 和 B)我如何成功定义它以解决错误消息

非常感谢

菲尔

解决方法

因此,这里有几件事(根据最新评论):

  1. is_page()不接受bool值,它需要一个id或一个页面名称字符串(或二者之一的数组)。
  2. 当您传入页面的$is_tree时,将定义
  3. pid。该函数返回truefalse$is_tree不在该函数之外使用-它只是bool值的持有者。
  4. wpdocs_is_tree()将单个帖子ID作为参数,但是您正在传递数组。
  5. 您正在将$pid分配给is_page(),这将返回true或false,而不是wpdocs_is_tree()期望的发布ID。
  6. 我还更新了wpdocs_is_tree()以在第一行使用global $post而不是$post = get_post(),因为已经有一个全局变量。

代码如下:

/* Check whether we are on this page or a sub page
*
* @param int $pid Page ID to check against.
* @return bool True if we are on this page or a sub page of this page.
*/
function wpdocs_is_tree( $pid ) {      // $pid = The ID of the page we're looking for pages underneath
    global $post;               // load details about this page

    $is_tree = FALSE;

    if ( is_page( $pid ) ) {
        $is_tree = TRUE;            // we're at the page or at a sub page
    }

    $anc = get_post_ancestors( $post->ID );
    foreach ( $anc as $ancestor ) {
        if ( is_page() && $ancestor === $pid ) {
            $is_tree = TRUE;
        }
    }

    return $is_tree;  // we aren't at the page,and the page is not an ancestor
}

?>

<?php
/* In plain english (in order): if the current page is my-newcomen or the-piston-engine-revolution 
 * AND wpdocs_is_tree returns true by passing the current page id,then continue 
 * AND is NOT society-business or journal-archive
 */
if ( is_page( ['my-newcomen','the-piston-engine-revolution'] ) && wpdocs_is_tree( get_queried_object_id() ) && ! is_page('society-business','journal-archive') ) { ?> 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-