我知道我可以做大量的if语句,只需确保我涵盖了每个场景,但这看起来很混乱,肯定有更干净、更经得起未来考验的选项吗?
没有!有点乱。不幸的是,没有一个函数可以输出所有页面类型的标题。
WordPress中基本上有4种“类型”的页面需要不同的标题:
单个帖子(或页面)存档搜索结果,这样您就可以编写自己的函数,并将其放在标题中。为每种类型的页面输出适当标题的php:
function wpse_321605_title() {
if ( is_singular() ) {
$queried_object_id = get_queried_object_id();
echo get_the_title( $queried_object_id );
} else if ( is_archive() ) {
the_archive_title();
} else if ( is_search() ) {
echo \'Searching for: \' . esc_html( get_search_query() );
} else if ( is_404() ) {
echo \'Page Not Found\';
}
}
然而,很多人不喜欢这样
the_archive_title()
在category和tag archives前面加上“category:”和“tag:”,因此如果不需要这些前缀,则需要单独处理分类法归档并使用
single_term_title()
:
function wpse_321605_title() {
$queried_object_id = get_queried_object_id();
if ( is_singular() ) {
echo get_the_title( $queried_object_id );
} else if ( is_tax() || is_tag() || is_category() ) {
single_term_title()
} else if ( is_archive() ) {
the_archive_title();
} else if ( is_search() ) {
echo \'Searching for: \' . esc_html( get_search_query() );
} else if ( is_404() ) {
echo \'Page Not Found\';
}
}