Saya membuat jenis pos kustom yang disebut 'portofolio' tetapi saya ingin mengubahnya menjadi 'proyek'. Apa langkah tepat yang harus saya ambil untuk mengubah nama dengan aman dan mencegah posting tipe posting kustom menghilang di dasbor?
Catatan: Sudah ada posting di portfolio
jadi saya tidak bisa hanya beralih portfolio
dengan 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
sumber
sumber
Jawaban:
Jika Anda belum memiliki pos di portofolio Anda.
Itu akan sangat sederhana. Ganti nama semuanya dengan "Portofolio" menjadi "Proyek". Anda tidak akan kehilangan apa pun dan mengubah nama.
Edit:
Coba gunakan plugin ini http://wordpress.org/extend/plugins/ptypeconverter/ untuk mengekspor posting saat ini dengan aman dan mengimpornya ke jenis posting kustom baru Anda.
Jadi langkah-langkahnya adalah:
1 Unduh dan gunakan plugin: http://wordpress.org/extend/plugins/ptypeconverter/
2 Salin file "portofolio" jenis pos kustom Anda di suatu tempat simpan. sebut saja misalnya portfolio_post_typeBACKUP.php
3 Sekarang Anda yakin ketika metode ini gagal. Anda dapat memulihkannya.
4 Ubah " portofolio " menjadi " proyek "
5 Impor posting dengan plugin dan biola!
Semoga ini berhasil.
sumber
portfolio
.Anda dapat melakukan ini secara langsung dengan MySQL juga.
Dua hal yang perlu diperhatikan:
wp_postmeta
dalam array serial, Anda tidak ingin melakukan UPDATE / REPLACE sederhana karena itu akan meledakkan mereka! Yah, kecuali kedua string tipe posting baru dan lama memiliki panjang yang sama persis.sumber
Memperluas jawaban Will sedikit lebih jauh ..., dan terutama jika Anda melakukannya dari plugin Anda:
Perubahan di sini adalah untuk tidak mengganti tipe lama dalam panduan secara langsung, tetapi ganti hanya jika "post_type = old_type" atau "/ old_type /" ada. Ini menghindari kesalahan penggantian siput yang valid. (mis. jenis pos kustom Anda adalah portofolio, dan siput halaman juga memiliki portofolio di dalamnya)
Alternatif lain adalah melakukan sesuatu seperti ini:
HTH!
sumber
Gunakan Kueri Basis Data WordPress tetapi Jangan Lupa Tentang Data Opsi Serius
Metode yang bekerja untuk saya adalah melakukan pencarian dan penggantian dalam database WordPress, tetapi pastikan untuk tidak mengacaukan data opsi serial dalam proses. Cara terbaik yang saya temukan adalah menggunakan pencarian aman dan mengganti utilitas basis data dari interkoneksi / itu . Jangan sekali-kali melakukan kueri tipe
SET
post_type= REPLACE(
post_type,'old_post_type','new_post_type')
tanpa mengetahui apa yang Anda lakukan atau data serial akan terputus karena ia menyimpan checksum dan tidak akan dapat di-unserialize dengan benar.Baca bagian Masalah Potensial sebelum secara membabi buta mengikuti ini
Langkah 1 - Perbarui Database Anda dengan Aman dengan Nama Baru
Langkah 2 - Setel Ulang Permalink Anda
Jika Anda menggunakan permalinks, pembaruan ke basis data Anda akan mengacaukan pengalihan Anda ke jenis posting khusus Anda. Ada perbaikan yang mudah, hanya masuk ke pengaturan WordPress / permalinks dan perhatikan pengaturan saat ini (milik saya adalah 'nama posting'). Kemudian beralih kembali ke default, klik 'simpan', lalu kembali ke pengaturan sebelumnya, lalu simpan lagi. Anda baru saja memperbaiki masalah pengalihan Anda.
Langkah 3 - Ganti Nama Template Jenis Posting Kustom Tema Anda
Jika Anda seperti saya, dan Anda membuat templat jenis kiriman khusus, Anda harus mengganti namanya atau kiriman khusus Anda akan terlihat kacau. Masuk saja ke tema Anda dan temukan file apa pun yang memiliki nama tipe posting lama di nama file-nya dan ganti nama file menggunakan nama posting baru Anda. Sebagai contoh, saya harus mengubah
single-project-portfolio.php
kesingle-before-after.php
ketika saya mengubah jenis posting saya dariproject-portfolio
kebefore-after
.Langkah 5 - Perbarui Kode Apa Saja
Lakukan pencarian file dan gantilah nama jenis pos kustom lama di folder tema dan plugin. Bagi saya, saya memiliki beberapa shortcode khusus yang bergantung pada pengambilan keputusan apakah saya menggunakan salah satu jenis posting kustom saya.
Uji Segalanya
Masalah Potensial (baca sebelum memulai prosedur ini)
Masalah SindikasiJika jenis posting khusus Anda disindikasikan, sadari bahwa pencarian dan penggantian awal Anda juga akan mengubah panduan posting Anda, yang akan memaksa semua pelanggan untuk melihat posting lama sebagai yang baru. Saya tidak harus berurusan dengan ini, tetapi jika Anda perlu, maka pertimbangkan untuk memilih secara manual tabel yang proses utilitas safeSearch, kemudian secara manual memperbarui data non-serial menggunakan permintaan berikut:
sumber
WHERE 'post_type' LIKE '%old_post_type%'
, saya akan menggunakanWHERE 'post_type' = 'old_post_type'
, karena cara Anda juga dapat menyebabkan beberapa jenis postingan lainnya, untuk berubah ..Saya tidak memiliki reputasi untuk berkomentar jadi saya akan menempatkan ini di sini. Memperluas contoh Will. Saya mengubah LIKEs menjadi "=" dan minta keduanya menunjuk ke MANA
post_type
Ingat juga untuk masuk ke Admin> Pengaturan> Permalinks dan tekan "Simpan Perubahan". Kalau tidak, tautan Anda kemungkinan akan rusak.
Anda juga perlu mengedit nama templat 'jenis tunggal'.
Ini yang harus Anda lakukan.
sumber
Inilah cara yang sangat sederhana:
sumber