get_the_ID () gibt eine Benachrichtigung in 404-Seite

Ich benutze get_the_ID () in meiner wp_enqueue_scripts Aktion aufgrund einiger Bedürfnisse, aber als Ergebnis bekomme ich die folgende Nachricht (WP-Debug ist an):

Hinweis: Versuchen Sie in Zeile 29 die Eigenschaft non-object in C: \ wamp \ www \ WordPress \ wp-includes \ post-template.php zu erhalten

Ich weiß, warum das passiert. Meine Frage ist, warum sollte das passieren? Soll WordPress nicht wissen, dass $ 404 kein $ post zugewiesen ist und ein leeres Ergebnis zurückgibt?

Muss ich verwenden:

if( !is_object($post) ) return; 

Überall benutze ich get_the_ID (), um diesen Hinweis loszuwerden?

Solutions Collecting From Web of "get_the_ID () gibt eine Benachrichtigung in 404-Seite"

get_the_ID() ist defekt.

 function get_the_ID() { return get_post()->ID; } 

Es versucht, die Mitglieds- ID für eine function zu verwenden, die manchmal ein post Objekt zurückgibt :

 /* * @return WP_Post|null WP_Post on success or null on failure */ function get_post( $post = null, $output = OBJECT, $filter = 'raw' ) { 

get_posts() kann NULL , und NULL hat keine Mitglieds- ID , weil es kein Objekt ist.

Auf einer 404-Seite gibt es kein globales post Objekt. Und da $post eine globale Variable ist, kann sie überall entfernt werden, sogar auf einzelnen Seiten.

Wenn Sie also get_the_ID() , müssen Sie nach einem post Objekt get_the_ID() .

 if ( get_post() ) { $id = get_the_ID(); // do something } 

Hier zwei Lektionen zu lernen:

  1. Traue niemals der WordPress API. Lesen Sie den Code, verstehen Sie seine Grenzen.
  2. Vermeiden Sie globale Variablen in Ihrem eigenen Code. Behandle jeden als ernsthaften Fehler und beseitige ihn sofort.

Sie können prüfen, ob Sie sich auf einer 404-Seite befinden:

 if( is_404() ) { return; } get_the_ID(); // ... 

Referenz

is_404()