Angezeigtes Feld auf 404-Seite außerhalb der Schleife anzeigen

Ich verwende ACF, um eine class innerhalb eines

-Tags anzuzeigen. Der Code dafür befindet sich in der header.php. Das benutzerdefinierte Feld wird in allen Seitenvorlagen in WP admin angezeigt. So funktioniert es am Frontend:

 <header class="site-header ID ); if ($header) { echo esc_attr( $header ); } else { echo 'white'; } ?>" > 

Dies funktioniert perfekt auf allen Seiten außer dem 404. Ich erhalte die folgende Nachricht innerhalb der Entwicklerwerkzeuge:

 <header class="site-header 
Notice: Trying to get property of non-object in /Applications/MAMP/htdocs/theme/wp-content/themes/theme/header.php on line 28
white">

Dies geschieht, weil der 404 eine statische Seite / Post ist und ihm keine ID zugeordnet ist.

Gibt es eine function in WordPress, mit der ich mein benutzerdefiniertes Feld richtig anzeigen kann?

Solutions Collecting From Web of "Angezeigtes Feld auf 404-Seite außerhalb der Schleife anzeigen"

Sie sollten die functionalität in einer Vorlagendatei nicht ausblenden. Vorlagen sind dumm, normalerweise führen Sie keine Komponententests für sie durch.

Ich würde empfehlen, die Logik in eine separate function in Ihrer functions.php :

 function header_class( $default= 'white' ) { $post = get_post(); // 404 pages, empty archives (user, taxonomy, date) if ( empty( $post ) ) return $default; $header = get_field( 'header', $post->ID ); if ( empty( $header ) || ! is_scalar( $header ) ) return $default; return esc_attr( $header ); } 

Und in deiner Vorlage kannst du jetzt einfach die function aufrufen:

  

Sie können die is 404- function verwenden, um dieses Problem zu beheben. Folgendes funktionierte für mich: