web-dev-qa-db-fra.com

Changer le type de message personnalisé

Je travaille dans un thème enfant et je ne souhaite donc pas modifier le fichier qui enregistre un portefeuille CPT sur mon site. J'ai utilisé un plugin pour changer le nom de Portfolio en Stories, mais le plugin ne donne pas d'option pour le slug.

J'ai essayé d'utiliser la fonction suivante:

function change_slug_of_post_type_portfolio() {
    register_post_type('portfolio', array('rewrite' => array ('slug' => 'stories',)));
}
add_action('init', 'change_slug_of_post_type_portfolio', 20);

Mais cela supprime complètement Portfolio de la barre latérale d'administration WordPress.

6
Darren Bachan

Le filtre register_post_type_args peut être utilisé pour modifier les arguments de type post:

add_filter( 'register_post_type_args', 'wpse247328_register_post_type_args', 10, 2 );
function wpse247328_register_post_type_args( $args, $post_type ) {

    if ( 'portfolio' === $post_type ) {
        $args['rewrite']['slug'] = 'stories';
    }

    return $args;
}
14
Dave Romsey

La réponse de @ dave-romsey n'a pas fonctionné pour moi, PHP n'arrêtait pas de me dire Warning: Cannot use a scalar value as an array in /path/to/functions.php. J'ai donc suivi la méthode array_merge.

Fonction complète à ajouter au fichier functions.php du thème de votre enfant:

function update_portfolios_slug( $args, $post_type ) {

    if ( 'portfolios' === $post_type ) {

        //$args['rewrite']['slug'] = 'presidentes';

        $my_args = array(
            'rewrite' => array( 'slug' => 'presidentes', 'with_front' => false )
        );

        return array_merge( $args, $my_args );
    }

    return $args;
}

add_filter( 'register_post_type_args', 'update_portfolios_slug', 10, 2 );

Après avoir téléchargé votre code, n'oubliez pas "d'actualiser" vos liens permanents en allant dans Paramètres> Permaliens et en appuyant sur Enregistrer les modifications .

À votre santé.

2
Felipe Romero