【发布时间】:2020-08-16 23:23:21
【问题描述】:
在键入此内容时,有人告诉我,在 Stackoverflow 中有许多类似措辞的问题及其答案 - 但在阅读了许多其他查询后,我仍然没有更接近解决我似乎遇到的关于错误的问题关于未定义变量的消息。
解释一下。 . .
我在我的子主题函数文件中使用代码 sn-p 来测试我从以下 Wordpress.org 参考页面获取的子页面: (https://developer.wordpress.org/reference/functions/is_page/ 中的 sn-p 4)。
我在代码下方添加了 2 行 A) 定义 $pid 是什么和 B) 定义我想要调用的子页面的 if 语句(参见下面代码中的最后 2 行):
* 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 行的变量 $is_tree(即上述代码 <?php if (is_page($is_tree) && !is_paged() && !is_page('society-business','journal-archive')) {?> 中的最后一行)未定义。
这个 php 领域超出了我目前的理解范围 - 但对我来说,$is_tree 变量 被定义 为 $is_tree = false; 或 $is_tree = true; 。 . .但显然情况并非如此!
如果有人可以查看上面的代码并告诉我,我将不胜感激
A) 为什么变量被视为未定义 和 B)我如何成功定义它以解决错误消息
非常感谢
菲尔
【问题讨论】:
-
$is_tree未定义,因为该变量不在全球范围内。该变量仅存在于该函数中。您可以试试这个is_page( wpdocs_is_tree( $pid ) ),因为该函数将返回 TRUE 或 FALSE。 -
一直在阅读有关变量作用域的信息,所以现在了解因为
$is_tree在函数内部,所以在函数外部使用时它将是未定义的。但是仍然不明白为什么它是未定义的 tbh - 是因为它是布尔值(真/假) - 你如何定义它?同时尝试了您在<?php if (is_page($is_tree) && !is_paged() && !is_page('society-business','journal-archive')) {?>行中使用is_page( wpdocs_is_tree( $pid ) )的建议,但它仍然说is_tree未定义。有什么想法吗? -
你是如何使用它的?发布您尝试过的确切行。当您传递
$pid并且满足任何if语句时,$is_tree被定义。 -
我在原始问题
<?php if (is_page( wpdocs_is_tree( $pid ) ) && !is_paged() && !is_page('society-business','journal-archive')) {?>中发布的代码中将其用作最后一行,这不是您的意思吗?
标签: php wordpress variables undefined