Ich verwende ACF, um eine class innerhalb eines
<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?
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: