提问人:Louise Kelly 提问时间:4/19/2016 更新时间:4/19/2016 访问量:2289
如何修复后模板.php中未定义的偏移错误
How to fix undefined offset error in post-template.php
问:
我正在尝试帮助一家小型企业使用他们的 Wordpress 网站,但无法弄清楚为什么他们的网站会产生此错误。以下是详细信息:
错误是这样的:未定义的偏移量:第 1 行的 /home/sojour15/public_html/wp-includes/post-template.php 278
这是后模板中的代码.php - 从第 275 行开始 - 第 278 行是“$content = $pages[$page - 1];”
if ( $page > count( $pages ) ) // if the requested page doesn't exist
$page = count( $pages ); // give them the highest numbered page that DOES exist
$content = $pages[$page - 1];
if ( preg_match( '/<!--more(.*?)?-->/', $content, $matches ) ) {
$content = explode( $matches[0], $content, 2 );
if ( ! empty( $matches[1] ) && ! empty( $more_link_text ) )
$more_link_text = strip_tags( wp_kses_no_null( trim( $matches[1] ) ) );
$has_teaser = true;
} else {
$content = array( $content );
}
我已经阅读了一些关于未定义的偏移错误的信息,并理解这意味着代码引用了数组中不存在的东西,但我不是PHP编码员 - 只是试图帮助小企业的人 - 我不确定如何解决这个问题。我尝试了一个我在某处找到的技巧 - 只需在第 278 行前面放一个“@”。奇怪的是,这个黑客工作了大约一个星期。现在它不再工作了 - 无论如何最好正确修复代码。任何指导都将非常受欢迎。谢谢。这里还有一个链接,指向发生这种情况的页面之一:https://www.sojournacupuncture.com/treatments-and-services/
答:
0赞
ryanicle
4/19/2016
#1
$page
可能有 0。因此,在数组中,-1 索引不存在。$pages[0-1]
您可以检查是否为空或 0,则它不应执行其余代码。希望这对你有用。$page
if ( $page > count( $pages ) ) // if the requested page doesn't exist
$page = count( $pages ); // give them the highest numbered page that DOES exist
// A check on $page
// If it is not empty, then it should execute the rest
if (!empty($page)) {
$content = $pages[$page - 1];
if ( preg_match( '/<!--more(.*?)?-->/', $content, $matches ) ) {
$content = explode( $matches[0], $content, 2 );
if ( ! empty( $matches[1] ) && ! empty( $more_link_text ) )
$more_link_text = strip_tags( wp_kses_no_null( trim( $matches[1] ) ) );
$has_teaser = true;
} else {
$content = array( $content );
}
}
评论
0赞
Louise Kelly
4/19/2016
非常感谢您的快速回复!好的,所以我试了一下 - 但不幸的是,错误并没有消失。更奇怪的是 - 错误仍然引用了同一行 (278),尽管该行现在只是您的评论之一。我仔细检查并明确编辑了正确的文件,现在的代码正是您刚刚发布的代码。我现在必须睡觉了,但任何其他想法都非常受欢迎。再次感谢您的帮助!!
0赞
Louise Kelly
4/19/2016
哦,我把它拿回来了 - 现在我收到了两个新错误: 未定义的变量:第 296 行 /home/sojour15/public_html/wp-includes/post-template.php 中的内容 未定义的变量:第 303 行 /home/sojour15/public_html/wp-includes/post-template.php 中的内容
0赞
Louise Kelly
4/19/2016
我将回滚我们所做的更改,因为这个新错误实际上使页面看起来更糟。
0赞
ryanicle
4/19/2016
如果它被注意到,你应该隐藏它。要隐藏 php 通知,您可以点击此链接 stackoverflow.com/questions/2867057/...
0赞
Mohammedshafeek C S
4/19/2016
#2
试试这段代码。
if ( $page > count( $pages ) ) // if the requested page doesn't exist
$page = count( $pages ); // give them the highest numbered page that DOES exist
$content = ctype_digit($page) && $page > 1 ? $pages[$page - 1] : $pages[0];
if ( preg_match( '/<!--more(.*?)?-->/', $content, $matches ) ) {
$content = explode( $matches[0], $content, 2 );
if ( ! empty( $matches[1] ) && ! empty( $more_link_text ) )
$more_link_text = strip_tags( wp_kses_no_null( trim( $matches[1] ) ) );
$has_teaser = true;
} else {
$content = array( $content );
}
如果它不好并且您的网站运行良好,那么..您可以按照波纹管链接中的说明隐藏警告和通知
评论
0赞
Louise Kelly
4/19/2016
感谢您的帮助!我再次测试,我的黑客实际上正在工作 - 我只需要清除服务器缓存即可使其生效。但我也将按照“隐藏 wordpress 警告”中的提示进行操作 - 这非常有用。谢谢!!
0赞
Louise Kelly
4/19/2016
只是为了确认 - 抑制错误(只是将 wp-debug 设置为 false)完全成功了!
下一个:如何解决$unset键上的键变量
评论