我可以从子主题更改自定义帖子类型标签吗?

时间:2011-06-05 作者:Javier Villanueva

我正在开发一个高级模板的子主题,它附带了一个标签名为“Projects”的自定义帖子类型,但我想将其更改为其他内容,我知道如果我转到函数。主主题的php文件我可以很容易地更改它,但我想从我的子主题更改它,这样我就不必编辑任何原始文件,可以吗?

提前感谢!

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

有一个全局数组$wp_post_types. 你可以改变$wp_post_types[$post_type]->labels 在父主题设置了CPT之后。

所以…如果父主题在上注册CPT\'init\' 像这样:

add_action( \'init\', \'register_my_cpt\', 12 );
然后您需要更高的优先级:

add_action( \'init\', \'change_cpt_labels\', 13 );
…或稍后的挂钩。我会使用wp_loaded:

add_action( \'wp_loaded\', \'change_cpt_labels\' );
自定义帖子类型示例place 更改为location
add_action( \'wp_loaded\', \'wpse_19240_change_place_labels\', 20 );

function wpse_19240_change_place_labels()
{
    $p_object = get_post_type_object( \'place\' );

    if ( ! $p_object )
        return FALSE;

    // see get_post_type_labels()
    $p_object->labels->name               = \'Locations\';
    $p_object->labels->singular_name      = \'Location\';
    $p_object->labels->add_new            = \'Add location\';
    $p_object->labels->add_new_item       = \'Add new location\';
    $p_object->labels->all_items          = \'All locations\';
    $p_object->labels->edit_item          = \'Edit location\';
    $p_object->labels->name_admin_bar     = \'Location\';
    $p_object->labels->menu_name          = \'Location\';
    $p_object->labels->new_item           = \'New location\';
    $p_object->labels->not_found          = \'No locations found\';
    $p_object->labels->not_found_in_trash = \'No locations found in trash\';
    $p_object->labels->search_items       = \'Search locations\';
    $p_object->labels->view_item          = \'View location\';

    return TRUE;
}

结束

相关推荐