我想更改自定义帖子类型视图的默认Draft
文字,我找到了一个可以执行此操作的函数:
add_filter( 'views_edit-custom_post_type_name', 'custom_draft_name', 10, 1);
if (!function_exists('custom_draft_name')) {
function custom_draft_name( $views ) {
if (isset($views['draft']) && $views['draft'] != '') {
$views['draft'] = str_replace(esc_html__('Draft', 'custom_post_type_name'), esc_html__('Unapproved', 'custom_post_type_name'), $views['draft']);
print_r($draft_array);
}
return $views;
}
}
问题在于我只能获得单一的变化。所以,如果我有一个Draft
我会有一个Unapproved
。但是当我有多个Drafts
时,我会自动拥有两个Unapproveds
。哪个太可怕了。它应该是两个未经批准的。所以我尝试使用_n()
作为复数,通过创建一个数组来检查我的str_replace
:
add_filter( 'views_edit-custom_post_type_name', 'custom_draft_name', 10, 1);
if (!function_exists('custom_draft_name')) {
function custom_draft_name( $views ) {
if (isset($views['draft']) && $views['draft'] != '') {
$draft_array = array(esc_html__('Draft', 'custom_post_type_name'), _n('Draft', 'Drafts' , 10, 'custom_post_type_name'));
$views['draft'] = str_replace($draft_array, esc_html__('Unapproved', 'custom_post_type_name'), $views['draft']);
print_r($draft_array);
}
return $views;
}
}
但我仍然得到Unapproveds
而不是Unapproved
。
任何帮助如何解决这个问题?
**答案**
我在SO xD上发布后立即再次找到了解决方案
只需做wp_count_posts('custom_post_type')
之类的
$custom_posts = wp_count_posts('custom_post_type_name');
if($custom_posts->draft == 1){
$views['draft'] = str_replace(esc_html__('Draft', 'custom_post_type_name'), esc_html__('Unapproved', 'custom_post_type_name'), $views['draft']);
} else{
$views['draft'] = str_replace(esc_html__('Drafts', 'custom_post_type_name'), esc_html__('Unapproved', 'custom_post_type_name'), $views['draft']);
}