custom-post-types – ¿Puedo cambiar una etiqueta de tipo de publicación personalizada de un tema secundario?

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;
}

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım