筛选器总是需要返回某些内容。因此,在第二个示例中,您应该尝试return $title;
在if
声明,这样就不会打断其他帖子。
add_filter( \'sanitize_title\', \'my_custome_slug\' );
function my_custome_slug( $title )
{
return ( \'customposttype\' === $GLOBALS[\'post\']->post_type )
? str_replace( \'*\', \'-\', $title )
: $title;
}
我不太清楚你为什么要把电话挂到
sanitize_title
. 在我看来,把帖子保存得不同和
using the save_post
hook to alter the title.
编辑
正如之前猜测的和评论中的评论所述(上面只是在互联网上找到的一个随机片段),下面是如何实际更改帖子标题的更新。
功能get_the_title()
由函数调用the_title()
其中一个应该用于输出帖子、页面和自定义帖子类型的标题。get_the_title()
返回筛选器内的标题:
return apply_filters( \'the_title\', $title, $id );
因此,最简单的方法就是在上面添加一个回调,并在那里更改输出:
add_filter( \'the_title\', \'wpse136615_title_str_replace\', 10, 2 );
function wpse136615_title_str_replace( $title, $id )
{
$post = get_post( $id );
return ( \'your_custom_post_type_name\' === $post->post_type )
? str_replace( \'*\', \'-\', $title )
: $title;
}
只需更换
your_custom_post_type_name
使用真正的自定义帖子类型名称(请参阅中使用的参数
register_post_type()
如果您不确定名称)。