如何在post-template.php中修复未定义的偏移量错误

时间:2016-04-19 03:45:01

标签: php wordpress undefined-index

我正在尝试使用他们的Wordpress网站帮助小型企业,但我无法弄清楚他们的网站为何会产生此错误。以下是详细信息:

错误是这样的:第278行 /home/sojour15/public_html/wp-includes/post-template.php 中的未定义偏移:-1

这里是post-template.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/

2 个答案:

答案 0 :(得分:0)

$page可能为0.因此,数组中的$pages[0-1],-1索引不存在。

您可以检查$page是否为空或0,然后它不应执行其余代码。希望这对你有用。

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 );
    }
}

答案 1 :(得分:0)

试试这段代码。

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 );
}

如果不合适且您的网站工作正常,那么您可以按照下面链接中的说明隐藏警告和通知

HIDE WORDPRESS WARNINGS AND NOTICES