我正在使用ACF显示<header>
标签此代码位于标题中。php。“自定义”字段显示在WP admin中的所有页面模板中。以下是它在前端的工作原理:
<header
class="site-header
<?php
$header = get_field( \'header\',$post->ID );
if ($header) {
echo esc_attr( $header );
}
else {
echo \'white\';
}
?>"
>
这在除了404之外的所有页面上都能完美地工作。我在开发工具中收到以下消息:
<header class="site-header <br /> <b>Notice</b>: Trying to get property of non-object in <b>/Applications/MAMP/htdocs/theme/wp-content/themes/theme/header.php</b> on line <b>28</b><br /> white">
</header>
之所以会发生这种情况,是因为404是一个静态页面/帖子,没有与之关联的ID。
WordPress中是否有一个功能可用于正确显示自定义字段?
最合适的回答,由SO网友:fuxia 整理而成
不应在模板文件中隐藏功能。模板是哑的,您通常不会对它们运行单元测试。
我建议将逻辑移到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 );
}
现在,您可以在模板中调用以下函数:
<header id="masthead" class="site-header <?= header_class() ?>" role="banner">