web-dev-qa-db-fra.com

get_term_link () retourne correct - mais les messages d'erreur illogiques perturbent

J'ai un problème vraiment étrange avec Wordpress et la fonction get_the_link () - et un problème suivant avec des objets qui sont des objets, mais identifiés en tant qu'erreur non-objet, ils fonctionnent.

D'abord le problème get_term_link ():

Si je demande avec un nombre normal et une taxonomie, cela fonctionne bien: $tax_name = 'products'; print get_term_link(13, $tax_name);

Il retourne l'URL, mais si je le fais comme suit: $tax_id = (int)$navItem['id']; $tax_name = 'products'; print get_term_link($tax_id , $tax_name);

J'ai eu le message d'erreur:

Erreur fatale capturable: l'objet de la classe WP_Error n'a pas pu être converti en chaîne dans /home/username/www/domainname/wp-content/themes/theme/sidebar-left.php à la ligne 89

La dernière ligne était 89. (var_dump of tax_id était ) int (13) )

Sans le (int) avant le navItem ['id], var_dump a abouti à string (2) .

J'ai essayé cela avec une fonction get_term_by () - comme source également. $term = get_term_by('id', $navItem['id'], $tax_name); $tax_id = $term->term_id; var_dump($tax_id); $tax_name = 'products'; print get_term_link($tax_id , $tax_name);

Vous avez un nouveau message d'erreur supplémentaire:

Avis: Essayer d'obtenir la propriété de non-objet dans /home/username/www/domainname/wp-content/themes/theme/sidebar-left.php à la ligne 88

Quel est le problème, car la ligne 88 est dans cet exemple "$ tax_id = $ term-> term_id;"! Je peux utiliser (int) mais cela ne change pas le message d'erreur.

La chose amusante est que la variable $ term est un objet. Et ce message d'erreur m'explique que j'essaie d'obtenir une propriété d'un non-objet. Si je convertis cet objet en tableau (get_object_vars () - function), j'accède aux valeurs du tableau comme un tableau (nom [clé])

Je reçois le message d'erreur suivant:

get_object_vars () s'attend à ce que le paramètre 1 soit un objet, null à la ligne 86

J'ai essayé de les convertir en entier, puis en chaîne. J'ai essayé d'utiliser slug au lieu de ID. Mais rien n'a fonctionné. Les résultats fonctionnent!

Ouais! Toutes les lignes affichées renvoyaient la bonne URL de lien!

Mais je reçois ce message d'erreur ... et je ne comprends pas pourquoi. Parce que ... ils sont totalement illogiques pour moi. Mais je pense ou plus, j'espère que je suis la partie illogique de ce problème et que quelqu'un peut m'aider à résoudre/comprendre cela.

Et NON ... je n'aime pas activer/masquer les messages d'erreur.

1
Sascha

get_term_link() retournera un objet WP_Error en cas d'erreur .

Vous ne pouvez pas print un objet ou un tableau, sinon vous obtiendrez des messages similaires à ceux que vous recevez. Utilisez var_dump() à la place ou print_r() et vous devriez voir ce qui se passe. Votre erreur vous dit même que WP_Error est l'objet impliqué.

Vous obtenez des erreurs lorsque le terme que vous recherchez n'est pas trouvé.

Et oui, vous devriez cacher vos messages d'erreur sur un site de production. Ils peuvent être révélateurs. Ecrivez dans un journal si vous devez avoir des erreurs sur le site de production.

1
s_ha_dum