Wordpress: Custom Post Type: Como renomear um CPT existente
Problema
Vamos supor que você criou um CPT: old_slug livro - https://seusite.local/livro e cadastrou vários livros e agora deseja alterar o nome do CPT new_slug para livros ( no plural ) https://seusite.local/livros
OLD CPT LIVRO
Obs: Se você não usou plugins para criar seu CPT, provavelmente seu código será semelhante a esse:
<?php
add_action( 'init', 'mbrasil_add_custom_post_type' );
function mbrasil_add_custom_post_type() {
register_post_type( 'livro',
array(
'labels' => array(
'name' => __( 'Livros', 'wpsites' ),
'singular_name' => __( 'Livro', 'wpsites' ),
),
'has_archive' => true,
'hierarchical' => true,
'menu_icon' => 'dashicons-admin-users',
'public' => true,
'rewrite' => array(
'slug' => 'livro',
'with_front' => false
),
'supports' => array(
'title',
'editor',
'author',
'thumbnail',
'excerpt',
'trackbacks',
'custom-fields',
'revisions',
'page-attributes' ),
'menu_position' => 2,
));
}
NEW CPT LIVROS
- register_post_type( 'livros' ...
- 'rewrite' => array( 'slug' => 'livros', ...
<?php
add_action( 'init', 'mbrasil_add_custom_post_type' );
function mbrasil_add_custom_post_type() {
register_post_type( 'livros',
array(
'labels' => array(
'name' => __( 'Livros', 'wpsites' ),
'singular_name' => __( 'Livro', 'wpsites' ),
),
'has_archive' => true,
'hierarchical' => true,
'menu_icon' => 'dashicons-admin-users',
'public' => true,
'rewrite' => array(
'slug' => 'livros',
'with_front' => false
),
'supports' => array(
'title',
'editor',
'author',
'thumbnail',
'excerpt',
'trackbacks',
'custom-fields',
'revisions',
'page-attributes' ),
'menu_position' => 2,
));
}
SQL
Obs: Para ter acesso a seus livros, será necessário rodar o script sql abaixo em seu banco de dados.
UPDATE wp_posts SET post_type = 'new_slug' WHERE post_type = 'old_slug';
Gostou? deixe seu comentário e sugestões.