我脱光了衣服Private:
和Protected:
来自我的自定义帖子标题,这些标题必须是私有的。我正在使用CSS Tricks\' snippet 为此:
function the_title_trim($title) {
if( is_admin() )
return $title;
$title = esc_attr($title);
$findthese = array(
\'#Protected:#\',
\'#Private:#\'
);
$replacewith = array(
\'\', // What to replace "Protected:" with
\'\' // What to replace "Private:" with
);
global $post;
if( \'mycpt\' === get_post_type($post) ) {
$title = preg_replace( $findthese, $replacewith, $title );
}
return $title;
}
add_filter(\'the_title\', \'the_title_trim\');
它工作正常。
但最近,当我换一种不同的语言时,我发现它不起作用。你可以很容易地猜到$findthese
数组无法将任何其他语言的字符串与指定的字符串匹配。
如何使用preg_replace()
用于剥离文本,支持i18n字符串?
最合适的回答,由SO网友:birgire 整理而成
我们可以使用protected_title_format
和private_title_format
自WordPress 2.8版起提供的过滤器:
add_filter( \'protected_title_format\', \'wpse_pure_title\', 10, 2 );
add_filter( \'private_title_format\', \'wpse_pure_title\', 10, 2 );
function wpse_pure_title( $format, \\WP_Post $post )
{
return \'mycpt\' === get_post_type( $post ) ? \'%s\' : $format;
}
为了摆脱前端的“私有”和“受保护”部件
mycpt
岗位类型。
我们不需要is_admin()
检查这里,因为这些过滤器only run 在前端。