Ändern Sie die Einstellungen von get_post_type_object

Ich habe ein Theme mit einem Plugin von theme developer für die Verwaltung von Portfolios. Dieses Plugin erstellt einen benutzerdefinierten Beitragstyp mit diesem Code:

// Portfolio post type register_post_type('wyde_portfolio', array( 'labels' => array( 'name' => __( 'Portfolios', 'Wyde' ), 'singular_name' => __( 'Portfolio', 'Wyde' ), 'add_new' => __('Add New', 'Wyde' ), 'add_new_item' => __('Add New Portfolio', 'Wyde'), 'edit_item' => __('Edit Portfolio', 'Wyde'), 'new_item' => __('New Portfolio', 'Wyde'), 'view_item' => __('View Portfolios', 'Wyde'), 'menu_name' => __('Portfolios', 'Wyde') ), 'public' => true, 'has_archive' => false, 'rewrite' => array( 'slug' => sanitize_title( $portfolio_slug ), ), 'supports' => array( 'title', 'editor', 'thumbnail'), 'can_export' => true, 'menu_icon' => 'dashicons-portfolio' ) ); 

Ich würde gerne die Option with_front => false beim Neuschreiben hinzufügen, um den gesamten Permalink im Stammverzeichnis meiner Site zu platzieren. Also musste ich das Umschreiben ändern mit:

 'rewrite' => array( 'slug' => sanitize_title( $portfolio_slug ), with_front => false, ), 

Ich möchte die Plugin-Datei nicht ändern, da ich die Änderung bei jedem Update verlieren werde. Ist es möglich, diese Option später hinzuzufügen, zum Beispiel in function.php meines Child Theme?

Beim Lesen der Dokumentation register_post_type scheint es möglich zu sein, den Post-Typ zu modifizieren ( Eine function zum Erstellen oder Ändern eines Post-Typs ). Ich habe versucht, das einfach zu meiner function.php hinzuzufügen:

 register_post_type('wyde_portfolio', array( 'rewrite' => array( 'slug' => sanitize_title( $portfolio_slug ), with_front => false, ), ) ); 

aber es funktioniert nicht.

Ich habe versucht, auch alle Parameter in register_post_type neu zu deklarieren, aber es funktioniert immer noch nicht.

Ich habe es auch versucht mit:

 $no = get_post_type_object('wyde_portfolio'); $no -> rewrite['with_front'] = false; register_post_type('wyde_portfolio', $no ); 

Haben Sie Vorschläge, wie ich das lösen kann?

Solutions Collecting From Web of "Ändern Sie die Einstellungen von get_post_type_object"

Seit WP 4.4.0 können Sie diesen Filter verwenden , mit dem Sie die in der ursprünglichen cpt-Registrierung verwendeten Argumente ändern können.

Fügen Sie dies zu Ihrer Datei functions.php hinzu:

 add_filter( 'register_post_type_args', function( $args, $post_type ) { if( 'wyde_portfolio' === $post_type && is_array( $args ) ) $args['rewrite']['with_front'] = false; return $args; }, 99, 2 ); 

Es stammt aus einer aktuellen Antwort, https://wordpress.stackexchange.com/a/224376/39150

Ich hoffe es hilft!