J'utilise get_the_ID () dans mon action wp_enqueue_scripts en raison de certains besoins, mais le résultat est que la notification suivante (wp-debug est activée):
Avis: essayer d'obtenir la propriété de non-objet dans C:\wamp\www\WordPress\wp-includes\post-template.php à la ligne 29
Je sais pourquoi cela se produit, ma question est pourquoi cela devrait-il se produire? WordPress n'est-il pas censé savoir qu'il n'y a pas de $ post attribué à 404 et renvoyer un résultat vide?
Dois-je utiliser:
if( !is_object($post) ) return;
Partout, j'utilise get_the_ID () pour me débarrasser de cet avis?
get_the_ID()
est cassé.
function get_the_ID() {
return get_post()->ID;
}
Il essaie d'utiliser le membre ID
sur une fonction qui retourne un objet post
parfois:
/*
* @return WP_Post|null WP_Post on success or null on failure
*/
function get_post( $post = null, $output = OBJECT, $filter = 'raw' ) {
get_posts()
peut retourner NULL
, et NULL
n'a pas de membre ID
, car ce n'est pas un objet.
Il n'y a pas d'objet global post
sur une page 404. Et comme $post
est une variable globale, elle peut être supprimée partout, même sur des pages simples.
Ainsi, chaque fois que vous utilisez get_the_ID()
, vous devez tester un objet post
.
if ( get_post() )
{
$id = get_the_ID();
// do something
}
Il y a deux leçons à apprendre ici:
Vous pouvez vérifier si vous êtes dans une page 404:
if( is_404() ) {
return;
}
get_the_ID();
// ...