Hice un tipo de publicación personalizado llamado 'portafolio' pero quiero cambiarlo a 'proyectos'. ¿Cuáles serían los pasos exactos que debo tomar para cambiar de forma segura el nombre y evitar que las publicaciones de tipo de publicación personalizada desaparezcan en el panel?
Nota: Ya hay envíos en portfolio
lo que no puedo acaba de cambiar hacia fuera portfolio
con 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
fuente
fuente
Respuestas:
Si aún no tiene publicaciones en su cartera.
Sería realmente simple Cambie el nombre de todo con "Portafolio" a "Proyectos". No perderá nada y cambiará el nombre.
Editar:
Intente usar este plugin http://wordpress.org/extend/plugins/ptypeconverter/ para exportar las publicaciones actuales de manera segura e importarlas a su nuevo tipo de publicación personalizada.
Entonces los pasos son:
1 Descargue y use el complemento: http://wordpress.org/extend/plugins/ptypeconverter/
2 Copie el archivo "portfolio" de tipo de publicación personalizado en algún lugar y guárdelo. llámelo por ejemplo portfolio_post_typeBACKUP.php
3 Ahora está seguro cuando este método falla. Puedes recuperarlo.
4 Cambiar " cartera " en " proyectos "
5 ¡ Importa las publicaciones con el complemento y viola!
Espero que esto funcione.
fuente
portfolio
Ya hay muchas publicaciones .También puede hacer esto directamente con MySQL.
Dos cosas a tener en cuenta:
wp_postmeta
matrices serializadas, ¡no desea hacer una ACTUALIZACIÓN / REEMPLAZO simple porque las explotará! Bueno, a menos que las cadenas de tipo de publicación nuevas y antiguas tengan exactamente la misma longitud.fuente
Extendiendo la respuesta de Will un poco más ..., y especialmente si lo está haciendo desde su complemento:
El cambio aquí es no reemplazar el tipo antiguo en el guid directamente, sino reemplazarlo solo si "post_type = old_type" o "/ old_type /" está presente. Esto evita reemplazar babosas válidas por error. (por ejemplo, su tipo de publicación personalizada es cartera, y la babosa de una página también tiene cartera)
Otra alternativa es hacer algo como esto:
HTH!
fuente
Use una consulta de base de datos de WordPress pero no se olvide de los datos de opciones serializadas
El método que funcionó para mí fue hacer una búsqueda y reemplazar dentro de la base de datos de WordPress, pero asegurándome de no arruinar los datos de las opciones serializadas en el proceso. La mejor forma que he encontrado es usar la búsqueda segura y reemplazar la utilidad de base de datos de interconexión / it . Nunca haga una consulta de tipo
SET
post_type= REPLACE(
post_type,'old_post_type','new_post_type')
sin saber lo que está haciendo o los datos serializados se romperán, ya que mantiene una suma de verificación y no podrá serserializar correctamente.Lea la sección Problemas potenciales antes de seguir ciegamente esto
Paso 1 - Actualice de forma segura su base de datos con un nuevo nombre
Paso 2 - Restablece tus enlaces permanentes
Si está utilizando enlaces permanentes, las actualizaciones de su base de datos arruinarán sus redireccionamientos a sus tipos de publicaciones personalizadas. Sin embargo, hay una solución fácil, solo vaya a la configuración / enlaces permanentes de WordPress y observe la configuración actual (la mía era 'nombre de la publicación'). Luego vuelva a los valores predeterminados, haga clic en 'guardar', luego vuelva a la configuración anterior, luego guarde nuevamente. Acaba de solucionar sus problemas de redireccionamiento.
Paso 3: cambie el nombre de las plantillas de tipo de publicación personalizada de su tema
Si eres como yo y creaste plantillas de tipo de publicación personalizadas, deberás cambiarles el nombre o tus publicaciones personalizadas se verán arruinadas. Simplemente vaya a su tema y busque cualquier archivo que tenga su antiguo nombre de tipo de publicación en su nombre de archivo y cambie el nombre del archivo usando su nuevo nombre de publicación. Por ejemplo, tuve que cambiar
single-project-portfolio.php
asingle-before-after.php
cuando cambié mi tipo de publicación deproject-portfolio
abefore-after
.Paso 5 - Actualice cualquier código
Haga una búsqueda de archivos y reemplácelos por su antiguo nombre de tipo de publicación personalizada en la carpeta de tema y complementos. Para mí, tenía varios códigos cortos personalizados que dependían de tomar una decisión sobre si estaba usando uno de mis tipos de publicaciones personalizadas.
Prueba todo
Posibles problemas (lea antes de comenzar este procedimiento)
Problemas de sindicaciónSi sus tipos de publicaciones personalizadas se sindicaron, tenga en cuenta que su búsqueda y reemplazo iniciales también cambiarán las guías de sus publicaciones, lo que obligará a todos los suscriptores a ver las publicaciones antiguas como nuevas. No tuve que lidiar con esto, pero si es necesario, considere elegir manualmente las tablas que procesa la utilidad safesearch, luego actualice manualmente los datos no serializados utilizando la siguiente consulta:
fuente
WHERE 'post_type' LIKE '%old_post_type%'
, me gustaría utilizarWHERE 'post_type' = 'old_post_type'
, ya que su forma podría también causar algún otro post-tipos, para cambiar ..No tengo la reputación de comentar, así que pondré esto aquí. Extendiendo el ejemplo de Will. Cambié los LIKE a "=" y los dos apuntan a DONDE
post_type
También recuerde ir a Admin> Configuración> Enlaces permanentes y presione "Guardar cambios". De lo contrario, es probable que tus enlaces se rompan.
También deberá editar los nombres de plantilla de 'tipo de publicación única'.
Esto debería ser todo lo que necesitas hacer.
fuente
Aquí hay una forma realmente simple:
fuente