En testant un de mes plugins avec la version 4.5 RC de WordPress, après avoir activé le débogage dans wp-config.php, j’ai remarqué une erreur apparaissant dans un fichier core WP
Notice: Trying to get property of non-object in /wp-includes/post-template.php on line 289
Grâce au processus d’élimination (désactiver tous les autres plugins jusqu’à retrouver le message), je pense que cela est dû à la page d’options de mon plugin (je suppose que cela pourrait être la page principale de la publication personnalisée), mais il n’ya pas de message d’erreur pour m'aider à me montrer où. L'erreur pointe vers un fichier principal WP.
Cette erreur n’apparaît pas partout dans l’administrateur, mais uniquement sur certaines pages, telles que les pages principales de Plugins, Tableau de bord, Utilisateurs, Commentaires, Apparence, Paramètres, et sur la page d’options elle-même. des pages de mon plugin ou des messages, ou des pages, ou des médias du site.
Le code sur cette ligne dans le noyau est
if ( false !== strpos( $post->post_content, '<!--noteaser-->' ) && ( ! $multipage || $page == 1 ) )
et ce qui est étrange, c’est que ma page d’options n’a aucune relation post-contenu, mais seulement des options, alors je ne sais pas pourquoi cette fonction (qui fait partie de "get_the_content") est même appelée. Et comme il n'y a pas de message d'erreur plus spécifique que ce qui est mentionné ci-dessus, ni de message faisant référence à une ligne dans MY code, j'ai du mal à trouver quelle partie de mon code pourrait même déclencher cela.
Quelqu'un peut-il recommander un moyen de résoudre ce problème mieux? Un outil avec un meilleur rapport d'erreur plus spécifique, ou des choses pour essayer de trouver et de résoudre le problème? Je sais que c'est juste un AVIS, et pas fatal, mais j'aimerais quand même le réparer si possible.
Merci.
J'ai compris la cause de ceci, mais c'était par essais et erreurs car il n'y avait pas de bonne information de débogage. Et l'erreur était dans la partie principale (appel post personnalisé) de mon plugin, PAS dans les options comme je l'avais supposé plus tôt. J'ai fini par découvrir que je devais utiliser
'content' => $p->post_content
dans ma requête/boucle foreach à la place de
'content' => get_the_content($p->ID)
et que la ligne d'erreur dans le débogage d'origine (ligne 289) échouait sur une fonction appelée "get_the_content" (c'est-à-dire celle que j'utilisais), qui s'est finalement révélée claire (bien que cela aurait été Nice si la ligne dans mon code a été indiquée dans le débogage). Quoi qu'il en soit, cela ne fonctionnerait pas sans une variable $ post globale, ce qui causait toutes sortes de problèmes de contenu. Mais tirer simplement le contenu directement (au lieu de passer par la fonction get_the_content) a résolu mon problème. J'espère que ceci aide quelqu'un d'autre.