web-dev-qa-db-fra.com

Essayer d'obtenir une propriété de non-objet dans wp-includes/capacités.php

Une fois par minute, la séquence d’avis suivante apparaît dans debug.log:

[23-Oct-2012 13:27:33 UTC] PHP Notice:  Trying to get property of non-object in mysite/wp-includes/capabilities.php on line 1022
[23-Oct-2012 13:27:33 UTC] PHP Notice:  Trying to get property of non-object in mysite/wp-includes/capabilities.php on line 1023
[23-Oct-2012 13:27:33 UTC] PHP Notice:  Trying to get property of non-object in mysite/wp-includes/capabilities.php on line 1023
[23-Oct-2012 13:27:33 UTC] PHP Notice:  Trying to get property of non-object in mysite/wp-includes/capabilities.php on line 1026
[23-Oct-2012 13:27:33 UTC] PHP Notice:  Trying to get property of non-object in mysite/wp-includes/capabilities.php on line 1026
[23-Oct-2012 13:27:35 UTC] PHP Notice:  Trying to get property of non-object in mysite/wp-includes/capabilities.php on line 1022
[23-Oct-2012 13:27:35 UTC] PHP Notice:  Trying to get property of non-object in mysite/wp-includes/capabilities.php on line 1023
[23-Oct-2012 13:27:35 UTC] PHP Notice:  Trying to get property of non-object in mysite/wp-includes/capabilities.php on line 1023
[23-Oct-2012 13:27:35 UTC] PHP Notice:  Trying to get property of non-object in mysite/wp-includes/capabilities.php on line 1026
[23-Oct-2012 13:27:35 UTC] PHP Notice:  Trying to get property of non-object in mysite/wp-includes/capabilities.php on line 1026

J'ai désactivé tous les plugins et sélectionné le thème par défaut de Twenty Eleven, mais je le comprends toujours. Comment puis-je résoudre ce problème? J'utilise WordPress 3.4.2.

2
seron

Vous avez probablement déjà compris cela, mais je venais de résoudre ce problème. Espérons que si quelqu'un se heurte à ce problème, cela peut aider.

Mon problème venait du plugin Disqus Comment System. Parce que j'avais utilisé mon nom d'utilisateur Disqus pour faire des commentaires de test sur un site de développement, lorsque j'ai lié mon site de production au site de développement, des commentaires sur des articles de blog de test inexistants ont été créés.

Je devais accéder à la base de données et supprimer les lignes de commentaires attachées à des identifiants de publication inexistants, ce qui réglait le problème pour moi.

3
Seth Alling

La "séquence" réelle d’avis correspond à la moitié de ce que vous avez posté ci-dessus (voir le décalage de 2 secondes pour un message et les numéros de ligne récurrents).

Cet avis provient de la fonction map_meta_cap() qui mappe les fonctionnalités de type publication personnalisées aux fonctionnalités classiques ou primitives.

Voici les lignes 1020 à 1028 de/wp-includes/capabilities.php (comme dans 3.4.2) :

$post_type = get_post_type_object( $post->post_type );

if ( ! $post_type->map_meta_cap ) {
    $caps[] = $post_type->cap->$cap;
    // Prior to 3.1 we would re-call map_meta_cap here.
    if ( 'edit_post' == $cap )
        $cap = $post_type->cap->$cap;
    break;
}

Donc techniquement, dans la première ligne de ce qui précède, le $post global a une propriété $post_type, mais lorsque cela est transmis à get_post_type_object() , la fonction échoue et ne renvoie pas d’objet de type publication.
Vous obtenez donc un avis de 1022 ($post_type->map_meta_cap), deux de 1023 ($post_type->cap->$cap) et deux de 1026 ($post_type->cap->$cap).

À ce stade, je dois cependant vous décevoir. Qu'est-ce qui appelle exactement map_meta_cap(), qu'il soit du noyau ou non, et pourquoi le slug de type de message en question ne semble pas être un type de message enregistré valide - je n'ai aucune idée ou suggestion.

2
Johannes Pille