我有一个页面,在这个页面上,我使用快捷代码查询了一个CPT中的多篇文章,因此该页面对于普通用户来说是一种归档页面。
Page Title
- CPT Post Title #1
- CPT Post Title #2
- CPT Post Title #3
在某些情况下,我只想更改页面标题,而不是CPT帖子标题。我试过:
function wpse_change_page_title( $title ) {
//if( condition matched ) {
return \'Test \' . $title;
//}
}
add_filter( \'the_title\', \'wpse_change_page_title\' );
但它改变了CPT帖子的标题。
Page Title
- Test CPT Post Title #1
- Test CPT Post Title #2
- Test CPT Post Title #3
如何只更改页面标题,而不更改CPT帖子标题?
Test Page Title
最合适的回答,由SO网友:Pieter Goosen 整理而成
我相信您所说的页面标题是来自主查询页面的标题。the_title()
过滤器(和the_content()
过滤器)以所有相应的模板标记为目标,而不考虑查询。
为了避免这种情况,只针对主查询和特定页面。
您可以在过滤器内尝试以下操作
if ( in_the_loop() && is_page( \'specific page\' ) ) {
// Do what you need to do
}
编辑我刚刚想到了这个,还没有测试过,但是你可以在过滤器中对照已知的静态标题检查你的标题,然后根据它做一些事情
示例:
if ( $title == \'My known title\' ) {
// Do something with the title
}
SO网友:fuxia
的第二个参数the_title
始终是帖子ID。请使用它。
add_filter( \'the_title\', function( $title, $post_id) {
$post = get_post( $post_id );
if ( ! $post or \'your_cpt\' !== $post->post_type )
return $title;
return \'Test \' . $title;
}, 10, 2 );