Je suis un développeur de thème WordPress et sur un thème sur lequel je travaille, j'ai allumé le mode de débogage et obtenez cette erreur dans une zone déroulante Sélectionner pour la page Options du thème.
L'erreur dit ceci: "Essayer d'obtenir des propriétés sur un non-objet." Voici le code fautif: P>
<option value="<?php echo $option->term_id; ?>" <?php if ( $settings[$id] == $option->term_id) { echo 'selected="selected"'; }?>>
4 Réponses :
Il semblerait que $ option code> est un tableau. Essayez:
$option['term_id']
Merci, j'ai essayé cela mais j'ai eu une erreur fatale. Voulez-vous dire mettre cela à la place de $ option-> term_id?
OK, je vois ce que vous dites. Plus tôt dans mon code, j'ai ceci (trop simplifié, juste pour montrer les parties importantes): C'est là que vient la valeur de $ ["Options". Le code fait partie d'une instruction de commutation ... p> Je devrais afficher tout le fichier afin de donner le contexte, et c'est assez long. P> P>
Vous devez éditer la question et y ajouter cette information plutôt que de faire une réponse à la question.
Vous faites cela plusieurs fois: dans au moins un des cas Tout d'abord, vérifiez que si si Comme: p> $ option code> n'est pas un objet. Lorsque vous faites
-> code> sur un objet non-objet, vous obtenez cette erreur. P>
$ option code> est en fait un objet et corrige L'utilisation si ce n'est pas le cas. p>
$ option code> est un tableau alors @matthewpavkov est correct, vous devriez faire une option
$ ['oneproperty] code> au lieu de
$ option-> quelqueProperty code>. p>
$ option code> est généralement un objet, peut-être
get_categories () code> est parfois Retourner
null code> ou
false code> dans une condition d'échec. Vérifiez cela avant d'accéder à
$ option code>. P>
Omg evan, cela a fonctionné! WOW, j'ai été à ce problème pendant près de deux jours et cette simple déclaration a été réparée. Merci beaucoup, et merci à tous ceux qui ont répondu, j'apprécie vraiment toute votre aide !!
De rien! PHP est plein de choses originaires comme celle-ci. Gardez cela à l'esprit pour l'avenir!
Oui définitivement! J'ai appris davantage sur PHP au cours des derniers jours que dans toute cette année, lol.
@ajreal - is_Object () tandis que "plus sûr" est surchargé. En règle générale, une fonction renvoie ce que vous vous attendez à ce que ce soit (dans ce cas un objet) ou null / faux pour échec. L'IF ($ objet) attire ce cas majoritaire. Si la fonction renvoie l'une quelconque de plusieurs types différents, mais valables, la fonction a une conception erronée ou si vous devez effectuer beaucoup plus de logique traiter les résultats - car ils sont tous valables. Mais, je ne peux penser à aucune fonction qui ne renvoiait aucun des matrices ou un objet ou un flotteur. Peut tu?
mauvaise réponse, si l'option $ est quelque chose qui n'est pas nulle et non un objet, votre code échouera, PS: IS_Object n'est jamais Overkill B>
@ajreal - Vous devez revenir en arrière et lire ma réponse complète. Cela dépend de l'option $. De ma réponse: "Tout d'abord, vérifiez que l'option $ est en fait un objet et corrige l'utilisation si ce n'est pas le cas." Le code "Comme:" ci-dessus est uniquement destiné à être utilisé lorsque "Si $ option est généralement un objet, peut-être get_catégories () renvoie parfois NULL ou FALSE dans une condition d'échec." Dans ce cas, il ne s'agit que d'un objet ou d'une nul / faux. Aucune autre vérification n'est requise. Aussi: IS_Object prend un tiers de plus que "si" est inefficace et donc excédant si vous savez que vous n'allez jamais obtenir, disons, un entier de retour.
Mauvaise réponse à nouveau, il y a gettype code>, et encore
is_Object code> est surkill
Je suis d'accord, IS_Object est Overkill :-d - aussi gettype code> est d'environ 5 fois pire qu'un simple
si code> chèque. Les deux sont bien moins efficaces, ainsi trop excédentaires lorsque vous savez quels sont les résultats. Vous devriez savoir ce que les résultats vont être parce que vous êtes le codeur et vous devriez pouvoir prédire avec précision ce que la fonction reviendra. Ne mettez pas la haine dans le monde. Donner crédit lorsque le crédit est dû. Ma réponse a corrigé avec précision le problème à la main. Et je n'avais pas besoin des résultats d'un
var_dump () code> ou
var_export () code> pour le faire. Juste une expérience de programmation PHP.
L'exécuter de l'action ... I.E.:
function your_function(){ YOUR CODES HEREEEEEEEEEEE............ } ADD_ACTION('init','your_function');
Oh, et je ne suis pas intéressé à supprimer ces avis dans php.ini. En fait, j'ai besoin de corriger l'erreur!
Eh bien, qu'est-ce que
$ option code>? Essayez
var_dump ($ option) code>.
Êtes-vous sûr que la valeur
$ [options '] code> est peuplée?
$ Option a été définie dans la boucle de Foreach ...
Mais qu'est-ce que est-ce i>? Ce n'est évidemment pas un objet, même si vous le traitez comme un.
Je vais vérifier cependant. En outre, le code fonctionne réellement correctement lorsque DEBUG est éteint. Je ne sais tout simplement pas comment l'obtenir pour arrêter de montrer ces avis. $ Option est censé être les valeurs dans une liste
Simplement faire
var_dump ($ option) code> pour voir ce que
$ option code> réellement est i>, qui vous dira comment le gérer.
Ok quand je fais ça je reçois bool (faux)
Mais c'est définitivement un tableau, donc je suis confus, lol
Si c'est
faux code> c'est définitivement pas i> un tableau. Vous devrez retrouver cette valeur pour voir d'où cela vient et pourquoi ce n'est pas ce que vous attendez.
OK, si je fais un Var_Dummp sur $ la valeur ["Options"], je reçois toutes les valeurs de ma matrice. Mais si je fais une option Var_Dump sur $, je viens de devenir bool (faux). C'est étrange ... et comment puis-je faire une trace? Désolé, je suis toujours nouveau à PHP!
Mettez à jour votre question avec
var_export (valeur $ ["Options ']); Code>
Lorsque je fais que VAR_EXPORT, je reçois un énorme tableau avec ce qui suit (il s'agit simplement du premier index dans la matrice): tableau (0 => stdclass :: __ set_state (tableau ('Term_id' => '3', 'Nom' => 'aciforme', 'slug' => 'aciforme', 'term_group' => '0', 'term_taxonomy_id' => '3', 'taxonomie' => "Catégorie '" =>' ', 'Parent' => '0', 'Comptez' => '2', 'Cat_ID' => '3', 'Catégorie_Count' => '2', 'Catégorie_Description' => '', 'CAT_NAME "=>' aciforme ',' catégorie_niconame '=>' aciforme ',' catégorie_parent '=>' 0 ',)),