Pregunta:
Estoy desarrollando un tema hijo de una plantilla premium, esto viene con un tipo de publicación personalizada con el nombre de etiqueta de "Proyectos", pero me gustaría cambiarlo a otra cosa, sé que si voy a functions.php archivo del tema principal Puedo cambiarlo fácilmente, pero me gustaría cambiarlo de mi tema hijo para no tener que editar ninguno de los archivos originales, ¿es posible?
¡Gracias por adelantado!
Respuesta:
Hay una matriz global $wp_post_types
. Puede cambiar $wp_post_types[$post_type]->labels
después de que el tema principal haya establecido el CPT.
Entonces … si el tema padre registra el CPT en 'init'
así:
add_action( 'init', 'register_my_cpt', 12 );
Entonces necesitas una prioridad posterior:
add_action( 'init', 'change_cpt_labels', 13 );
… O un gancho posterior. Yo usaría wp_loaded
:
add_action( 'wp_loaded', 'change_cpt_labels' );
Ejemplo de place
tipo de publicación personalizado cambiado a 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;
}