Fiz um tipo de postagem personalizado chamado 'portfólio', mas quero alterá-lo para 'projetos'. Quais seriam as etapas exatas que preciso tomar para alterar o nome com segurança e impedir que as postagens personalizadas do tipo de postagem desapareçam no painel?
Nota: Já existem lugares em portfolio
que eu não pode simplesmente mudar para fora portfolio
com projects
.
/* Register Portfolio Post Type */
add_action('init', 'create_portfolio');
function create_portfolio() {
$labels = array(
'name' => __('Portfolio', 'post type general name'),
'singular_name' => __('Project', 'post type singular name'),
'add_new' => __('Add New', 'portfolio item'),
'add_new_item' => __('Add New Project'),
'edit_item' => __('Edit Project'),
'new_item' => __('New Project'),
'view_item' => __('View Project'),
'search_items' => __('Search Projects'),
'not_found' => __('Nothing found'),
'not_found_in_trash' => __('Nothing found in Trash'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'rewrite' => true,
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title','editor','thumbnail')
);
register_post_type( 'portfolio' , $args );
}
/* Register Skills Taxonomy */
register_taxonomy("Skills", array("portfolio"), array("hierarchical" => true, "label" => "Skills", "singular_label" => "Skill", "rewrite" => true));
/* Add Fields */
add_action("admin_init", "add_portfolio_fields");
function add_portfolio_fields(){
add_meta_box("website_url", "Website URL", "website_url", "portfolio", "side", "low");
add_meta_box("view_more", "View More", "view_more", "portfolio", "side", "low");
add_meta_box("screenshot_name", "Screenshot Name", "screenshot_name", "portfolio", "side", "low");
add_meta_box("thumbnail_name", "Thumbnail Name", "thumbnail_name", "portfolio", "side", "low");
add_meta_box("thumbnail_alt", "Thumbnail Alt", "thumbnail_alt", "portfolio", "side", "low");
}
function website_url(){
global $post;
$custom = get_post_custom($post->ID);
$website_url = $custom["website_url"][0];
?>
<label>Website URL:</label>
<input size="50" name="website_url" value="<?php echo $website_url; ?>" />
<?php
}
function view_more() {
global $post;
$custom = get_post_custom($post->ID);
$view_more = $custom["view_more"][0];
?>
<label>View More:</label>
<input size="50" name="view_more" value="<?php echo $view_more; ?>" />
<?php
}
function screenshot_name() {
global $post;
$custom = get_post_custom($post->ID);
$screenshot_name = $custom["screenshot_name"][0];
?>
<label>Screenshot Name:</label>
<input name="screenshot_name" value="<?php echo $screenshot_name; ?>" />
<?php
}
function thumbnail_name() {
global $post;
$custom = get_post_custom($post->ID);
$thumbnail_name = $custom["thumbnail_name"][0];
?>
<label>Thumbnail Name:</label>
<input name="thumbnail_name" value="<?php echo $thumbnail_name; ?>" />
<?php
}
function thumbnail_alt() {
global $post;
$custom = get_post_custom($post->ID);
$thumbnail_alt = $custom["thumbnail_alt"][0];
?>
<label>Thumbnail Alt:</label>
<input name="thumbnail_alt" value="<?php echo $thumbnail_alt; ?>" />
<?php
}
add_action('save_post', 'save_portfolio_details');
function save_portfolio_details(){
global $post;
update_post_meta($post->ID, "website_url", $_POST["website_url"]);
update_post_meta($post->ID, "view_more", $_POST["view_more"]);
update_post_meta($post->ID, "screenshot_name", $_POST["screenshot_name"]);
update_post_meta($post->ID, "thumbnail_name", $_POST["thumbnail_name"]);
update_post_meta($post->ID, "thumbnail_alt", $_POST["thumbnail_alt"]);
}
/* Custom Columns */
add_action("manage_posts_custom_column", "portfolio_custom_columns");
add_filter("manage_edit-portfolio_columns", "portfolio_edit_columns");
function portfolio_edit_columns($columns){
$columns = array(
"cb" => "<input type=\"checkbox\" />",
"title" => "Project Title",
"description" => "Description",
);
return $columns;
}
function portfolio_custom_columns($column){
global $post;
switch ($column) {
case "description":
the_excerpt();
break;
}
}
custom-post-types
Desi
fonte
fonte
Respostas:
Se você ainda não tem posts em seu portfólio.
Seria muito simples. Renomeie tudo com "Portfólio" em "Projetos". Você não perderá nada e mudará o nome.
Editar:
Tente usar este plugin http://wordpress.org/extend/plugins/ptypeconverter/ para exportar as postagens atuais com segurança e importá-las para seu novo tipo de postagem personalizada.
Portanto, as etapas são:
1 Faça o download e use o plugin: http://wordpress.org/extend/plugins/ptypeconverter/
2 Copie o arquivo "portfólio" do seu tipo de postagem personalizado em algum lugar, salve. chame-o, por exemplo, portfolio_post_typeBACKUP.php
3 Agora você tem certeza de quando esse método falha. você pode recuperá-lo.
4 Altere " portfólio " para " projetos "
5 Importe as postagens com o plugin e o viola!
Espero que isso funcione.
fonte
portfolio
.Você também pode fazer isso diretamente com o MySQL.
Duas coisas a serem observadas:
wp_postmeta
matrizes serializadas, não deseja fazer uma simples ATUALIZAÇÃO / SUBSTITUIÇÃO, pois ela as explodirá! Bem, a menos que as seqüências de caracteres novas e antigas tenham o mesmo comprimento.fonte
Estendendo a resposta de Will um pouco mais ... e especialmente se você estiver fazendo isso no seu plugin:
A mudança aqui é não substituir diretamente o tipo antigo no guid, mas substitua apenas se "post_type = old_type" ou "/ old_type /" estiver presente. Isso evita a substituição de lesmas válidas por engano. (por exemplo, seu tipo de postagem personalizado é portfólio e a lesma de uma página também possui portfólio)
Outra alternativa é fazer algo assim:
HTH!
fonte
Use uma consulta ao banco de dados do WordPress, mas não se esqueça dos dados das opções serializadas
O método que funcionou para mim foi fazer uma pesquisa e substituir no banco de dados WordPress, mas certificando-se de não estragar os dados das opções serializadas no processo. A melhor maneira que encontrei é usar a pesquisa segura e substituir o utilitário de banco de dados da interconexão / it . Nunca faça uma consulta do tipo
SET
post_type= REPLACE(
post_type,'old_post_type','new_post_type')
sem saber o que você está fazendo ou os dados serializados serão interrompidos, pois mantém uma soma de verificação e não será capaz de desserializar adequadamente.Leia a seção Problemas potenciais antes de seguir cegamente este
Etapa 1 - Atualize seu banco de dados com segurança com novo nome
Etapa 2 - Redefinir seus links permanentes
Se você estiver usando links permanentes, as atualizações no seu banco de dados estragarão seus redirecionamentos para seus tipos de postagem personalizados. Existe uma solução fácil, basta acessar as configurações / links permanentes do WordPress e anotar a configuração atual (a minha era 'nome do post'). Em seguida, volte ao padrão, clique em 'salvar', depois na configuração anterior e salve novamente. Você acabou de corrigir seus problemas de redirecionamento.
Etapa 3 - Renomeie os modelos de tipo de postagem personalizados do seu tema
Se você é como eu e criou modelos de tipo de postagem personalizados, precisará renomeá-los ou suas postagens personalizadas parecerão erradas. Basta entrar no seu tema e encontrar qualquer arquivo que tenha o seu antigo nome de tipo de postagem no nome do arquivo e renomeá-lo usando seu novo nome de postagem. Por exemplo, tive que mudar
single-project-portfolio.php
parasingle-before-after.php
quando alterei meu tipo de postagem deproject-portfolio
parabefore-after
.Etapa 5 - Atualizar qualquer código
Faça uma pesquisa de arquivo e substitua pelo seu antigo nome de tipo de postagem personalizado na pasta tema e plug-ins. Para mim, eu tinha vários códigos de acesso personalizados que dependiam de tomar uma decisão sobre se eu estava usando um dos meus tipos de postagem personalizados.
Teste Tudo
Problemas potenciais (leia antes de iniciar este procedimento)
Problemas de organizaçãoSe seus tipos de postagem personalizados foram organizados, saiba que sua pesquisa e substituição inicial também mudarão os guias de suas postagens, o que forçará todos os assinantes a ver as postagens antigas como novas. Não precisei lidar com isso, mas se você precisar, considere escolher manualmente as tabelas que o utilitário safesearch processa e atualizar manualmente quaisquer dados não serializados usando a seguinte consulta:
fonte
WHERE 'post_type' LIKE '%old_post_type%'
, gostaria de usarWHERE 'post_type' = 'old_post_type'
, uma vez que seu caminho poderia também causar alguns outros pós-tipos, para mudar ..Não tenho reputação de comentar, então colocarei isso aqui. Estendendo o exemplo de Will. Alterei os LIKEs para "=" e os dois apontam para WHERE
post_type
Lembre-se também de acessar Admin> Configurações> Permalinks e clicar em "Salvar alterações". Caso contrário, seus links provavelmente serão quebrados.
Você também precisará editar qualquer nome de modelo 'tipo único de postagem'.
Isso deve ser tudo o que você precisa fazer.
fonte
Aqui está uma maneira realmente simples:
fonte