webentwicklung-frage-antwort-db.com.de

Ändern Sie den benutzerdefinierten Pfostentyp

Ich arbeite in einem untergeordneten Thema, daher möchte ich die Datei, in der ein Portfolio-CPT auf meiner Website registriert wird, nicht bearbeiten. Ich habe ein Plugin verwendet, um den Namen von Portfolio in Stories zu ändern, aber das Plugin bietet keine Option für den Slug.

Ich habe versucht, die folgende Funktion zu verwenden:

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

Portfolio wird jedoch vollständig aus der WordPress-Admin-Seitenleiste entfernt.

6
Darren Bachan

Der register_post_type_args Filter kann verwendet werden, um Argumente vom Typ post zu ändern:

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

@ Dave-Romsey Antwort funktionierte nicht für mich, PHP sagte mir immer wieder Warning: Cannot use a scalar value as an array in /path/to/functions.php Also ging ich den array_merge Weg.

Vollständige Funktion, die Sie zum Thema Ihres Kindes hinzufügen müssen functions.php file:

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

Vergessen Sie nach dem Hochladen Ihres Codes nicht, Ihre Permalinks zu "aktualisieren", indem Sie zu Einstellungen> Permalinks gehen und Änderungen speichern drücken.

Prost.

2
Felipe Romero