在wordpress中修改复数形式的views_edit

时间:2015-11-18 08:03:59

标签: php wordpress

我想更改自定义帖子类型视图的默认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']);
}

0 个答案:

没有答案