2016-04-19 2 views
0

J'essaie d'aider une petite entreprise avec leur site Wordpress, mais je suis incapable de comprendre pourquoi leur site génère cette erreur. Voici les détails:Comment réparer une erreur de décalage undefined dans post-template.php

L'erreur est la suivante: Undefined offset: -1 /home/sojour15/public_html/wp-includes/post-template.php en ligne 278

Et voici le code de le post-template.php - commençant par la ligne 275 - la ligne 278 est "$ 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); 
} 

J'ai lu sur les erreurs Undefined offset et comprendre que cela signifie que le code fait référence à quelque chose dans un tableau qui n'existe pas, mais je ne suis pas un codeur PHP - juste quelqu'un qui essaie d'aider un petit affaires - et je ne suis pas sûr de savoir comment résoudre ce problème. J'ai essayé un hack que j'ai trouvé quelque part - juste mettre un '@' devant la ligne 278. Bizarrement, ce hack a fonctionné pendant environ une semaine. Maintenant, cela ne fonctionne plus - et il serait préférable de corriger le code de toute façon. Toute orientation serait la bienvenue. Merci. Voici également un lien vers l'une des pages où cela se produit:

Répondre

0

$page est probablement 0. Ainsi, $pages[0-1] dans la matrice, -1 index n'existe pas.

Vous pouvez mettre une vérification si $page est vide ou 0, alors il ne devrait pas exécuter le reste des codes. J'espère que cela fonctionne pour toi.

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

Merci beaucoup pour la réponse rapide! OK, donc j'ai essayé - mais malheureusement, l'erreur ne s'est pas dissipée. Encore plus bizarre - l'erreur fait toujours référence à la même ligne (278) bien que cette ligne ne soit qu'un de vos commentaires. J'ai vérifié et j'ai édité le bon fichier, et le code est exactement ce que vous venez de publier. Je dois aller dormir maintenant mais toutes les autres pensées seraient les bienvenues. Merci encore pour votre aide!! –

+0

Oh je le reprends - maintenant je reçois deux nouvelles erreurs à la place: Variable indéfinie: contenu dans /home/sojour15/public_html/wp-includes/post-template.php à la ligne 296 Variable indéfinie: contenu dans/home /sojour15/public_html/wp-includes/post-template.php on line 303 –

+0

Je vais annuler les modifications que nous avons apportées car cette nouvelle erreur rend la page encore pire. –

0

Essayez ce code.

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

Si ce n'est pas bien et que votre site fonctionne bien then..you peut cacher l'avertissement et les avis en suivant les instructions dans le lien ci-dessous

HIDE WORDPRESS WARNINGS AND NOTICES

+0

Nous vous remercions de votre aide! J'ai testé à nouveau et mon hack fonctionne réellement - j'avais juste besoin de purger le cache du serveur pour qu'il prenne effet. Mais je vais également suivre les conseils dans les avertissements «hide wordpress» - c'est super utile. Je vous remercie!! –

+0

Et juste pour confirmer - suppression de l'erreur (il suffit de mettre wp-debug à false) complètement fait l'affaire! –