Cara mengganti nama Posting tipe-posting standar

8

Saya menggunakan posting-jenis Tulisan untuk menampilkan item-item portofolio dan tampak aneh memiliki portofolio yang diberi label sebagai posting. Apakah ada cara untuk mengubah nama Posting menjadi Portofolio sebagai gantinya mencerminkan penggunaannya dengan lebih baik.

Evie Milo
sumber
plugin ini mengubah jenis posting: wordpress.org/extend/plugins/post-type-switcher saya pikir yang satu ini berfungsi lebih baik di sebagian besar wordpress.org/extend/plugins/convert-post-types
helgatheviking

Jawaban:

9

Jika Anda hanya ingin mengubah nama tampilan posting, daripada membuat jenis posting kustom kemudian tambahkan kode ini ke file functions.php tema Anda.

// hook the translation filters
add_filter(  'gettext',  'change_post_to_portfolio'  );
add_filter(  'ngettext',  'change_post_to_portfolio'  );

function change_post_to_portfolio( $translated ) {
  $translated = str_ireplace(  'Post',  'Portfolio',  $translated );  // ireplace is PHP5 only
  return $translated;
}

Demi transparansi, saya mendapat kode ini dari artikel ini , walaupun saya pernah menggunakan trik serupa di masa lalu.

supajb
sumber
2
Meskipun ini baik-baik saja sebagai tampilan konsep teknis, mengganti beberapa kata dalam semua teks lokal terlalu luas.
Paling lambat
Bagaimana ini akan mempengaruhi kinerja? Apakah filter di atas hanya digunakan di backend?
mikkelbreum
Saya pikir ini bukan solusi yang baik untuk kasus khusus ini. $ Diterjemahkan mungkin berisi string seperti 'klik pada posting man' atau 'se om du har fået post' (bahasa Denmark), dalam hal ini Anda TIDAK ingin mengganti 'posting' dengan 'berita'
mikkelbreum
9

Saya menggunakan skrip berikut untuk mengubah nama jenis posting default:

function change_post_menu_label() {
    global $menu, $submenu;

    $menu[5][0] = 'Portfolio';
    $submenu['edit.php'][5][0] = 'Portfolio';
    $submenu['edit.php'][10][0] = 'New Portfolio';
    $submenu['edit.php'][16][0] = 'Portfolio Tags';
    echo '';
}
add_action( 'admin_menu', 'change_post_menu_label' );

function change_post_object_label() {
    global $wp_post_types;

    $labels = &$wp_post_types['post']->labels;
    $labels->name = 'Portfolio';
    $labels->singular_name = 'Portfolio';
    $labels->add_new = 'New Portfolio';
    $labels->add_new_item = 'New Portfolio';
    $labels->edit_item = 'Edit Portfolio';
    $labels->new_item = 'New Portfolio';
    $labels->view_item = 'View Portfolio';
    $labels->search_items = 'Search Portfolio';
    $labels->not_found = 'Not found';
    $labels->not_found_in_trash = 'Not found in trash';
}
add_action( 'init', 'change_post_object_label' );
elbatron
sumber
7

Anda perlu membuat Jenis Posting Kustom, "Portofolio".

Posting adalah Posting. Mengapa mencoba menggunakannya sebagai sesuatu yang bukan, dan kemudian mencoba mengubah nomenklatur mereka, alih-alih menulis satu atau dua fungsi sederhana functions.php, yang akan menghasilkan fungsionalitas yang tepat dan nomenklatur yang tepat yang Anda inginkan?

Chip Bennett
sumber
Karena saya belum pernah menggunakan jenis pos kustom hingga hari ini dan situs web yang saya atur menggunakan fitur blog untuk menjalankan portofolio karena klien tidak menginginkan blog - jadi saya pikir mengapa tidak menggunakan pengaturan blog untuk menjalankan portofolio sebagai gantinya - Simpan menciptakan kembali roda sehingga untuk berbicara. Tampaknya jauh lebih mudah untuk mengubah nama manu daripada melakukan kembali seluruh situs karena semua konten telah ditambahkan.
Evie Milo
Itu hanya akan mengambil query SQL untuk mengubah post_type untuk semua Posting yang terkena dampak, setelah Anda membuat Jenis Posting Kustom Anda ...
Chip Bennett
1
Chip benar di sini. Inilah yang akan saya lakukan dan apa yang harus dilakukan dalam kasus seperti IMHO ini.
mfields
2
Sql yang Anda butuhkan terlihat sedikit seperti ini. UPDATE wp_posts SET post_type = 'funny-bunny' WHERE post_type = 'post';Anda kemungkinan besar perlu mengubah awalan tabel (wp_) untuk mencerminkan pengaturan itu dalam instalasi Anda saat ini.
mfields
2
Saya mohon berbeda dari Chip Bennett yang terhormat ... Tulisan ada untuk mengatur elemen secara kronologis. Mengapa mendaftar post_type lain, ubah kueri, jika semua yang Anda butuhkan sudah ada di sana? Di situs web non-Inggris saya, saya secara teratur mengubah file bahasa WordPress untuk mencocokkan fungsionalitas Posting, dan mengubah nama menjadi Berita, Artikel, atau Portofolio.
brasofilo
2
// hook the translation filters
add_filter(  'gettext',  'change_post_to_article'  );
add_filter(  'ngettext',  'change_post_to_article'  );

function change_post_to_article( $translated ) {
     $translated = str_ireplace(  'Post',  'Article',  $translated );  // ireplace is PHP5 only
     return $translated;
}

Saya mendapat tip ini dari majalah smashing dan mengujinya dan itu bekerja dengan baik

http://www.smashingmagazine.com/2011/05/10/new-wordpress-power-tips-for-template-developers-and-consultants/
Berani
sumber
1

Saya menemukan utas ini ketika saya sedang mencari solusi untuk mengubah jenis posting dari satu nama ke yang lain.

Alih-alih melakukan permintaan khusus seperti yang disarankan oleh seseorang di sini saya hanya melakukan ini:

$post = get_post( $id );      // The current post id
$post->post_type = 'receipt'; // The new post type name
wp_update_post( $post );      // Updating the new information

Cpt harus ofc sudah dibuat dan diformat ..

Super hero
sumber
1

Ganti nama posting menjadi portofolio

function litho_posts_portfolio() {
    global $menu;
    global $submenu;
    $menu[5][0] = __("Portfolio", 'litho');
    $submenu['edit.php'][5][0] = __("Portfolio", 'litho');
    $submenu['edit.php'][10][0] = __("New Item", 'litho');
    echo '';
}
function litho_posts_portfolio_label() {
    global $wp_post_types;
    $labels = &$wp_post_types['post']->labels;
    $labels->name = __("Portfolio", 'litho');
    $labels->singular_name = __("Item", 'litho');
    $labels->add_new = __("New Item", 'litho');
    $labels->add_new_item = __("New Item", 'litho');
    $labels->edit_item = __("Edit Item", 'litho');
    $labels->new_item = __("Item", 'litho');
    $labels->view_item = __("View Item", 'litho');
    $labels->search_items = __("Search Portfolio", 'litho');
    $labels->not_found = __("No Item Found", 'litho');
    $labels->not_found_in_trash = __("No Item found in Trash", 'litho');
}
add_action( 'init', 'litho_posts_portfolio_label' );
add_action( 'admin_menu', 'litho_posts_portfolio' );
davidcondrey
sumber
Bagaimana itu berbeda dari jawaban lain oleh @elbatron?
kaiser
@kaiser - Jawaban ini benar, jawaban yang ditandai sebagai jawaban OP tidak benar (lihat tindakan - 'admin_menu' dan 'init' adalah jalan yang salah. Jawaban ini juga __()berfungsi bagi pengguna .
David Gard
Mengapa echo '';?
Bill
0

Jika Anda hanya ingin mengubah label menu admin dari Post -> Portofolio, lihat pertanyaan ini:

Mengubah Label Menu Admin

[Memperbarui]

Plugin ini Admin Menu Editor sepertinya memungkinkan Anda untuk mengubah label menu dengan lebih mudah - Saya belum mengujinya.

anu
sumber
terima kasih saya akan melihat apakah saya dapat menemukan sesuatu dari ini, meskipun terlihat agak rumit bagi saya.
Evie Milo
1
Saya menambahkan link ke sebuah plugin yang akan membantu Anda
anu
terima kasih untuk tautannya, tetapi saya ingin mendapatkan lebih banyak ke dalam file functions.php dan hindari menggunakan terlalu banyak plugin. Saya mengikuti tautan pertama Anda dan akhirnya membawa saya ke sini: new2wp.com/snippet/change-wordpress-posts-post-type-news dan itu telah membantu saya mengatasinya dengan sangat cepat - terima kasih atas bantuan Anda!
Evie Milo
@Evie Milo - Anda harus menandai jawaban sebagai diterima.
kaiser
0

Anda hanya perlu membuat posting khusus lain dengan kemampuan yang sama dengan posting biasa. Anda kemudian dapat menonaktifkan menu Posting dengan ini:

function remove_menus()
{
    global $menu;
    $restricted = array( __('Posts'));
    end ($menu);

    while (prev($menu))
    {
        $value = explode(' ',$menu[key($menu)][0]);

        if(in_array($value[0] != NULL?$value[0]:"" , $restricted))
        {
            unset($menu[key($menu)]);
        }
    }
}
add_action('admin_menu', 'remove_menus');
Pippin
sumber
turun rute ini akan membuat terlalu banyak pekerjaan tambahan pada tahap akhir dalam proyek ini - bukan sesuatu yang memungkinkan anggaran - semua konten sekarang telah ditambahkan dan saya hanya ingin melihat apakah ada cara untuk mengubah nama posting menjadi portofolio sehingga kurang membingungkan bagi klien.
Evie Milo
0

The get_post_type_object akan melakukan pekerjaan.

add_action( 'init', 'ns_change_post_object' );
// Change dashboard Posts to News
function ns_change_post_object() {
   $get_post_type = get_post_type_object('post');
    $labels = $get_post_type->labels;
    $labels->name = 'News';
    $labels->singular_name = 'News';
    $labels->add_new = 'Add News';
    $labels->add_new_item = 'Add News';
    $labels->edit_item = 'Edit News';
    $labels->new_item = 'News';
    $labels->view_item = 'View News';
    $labels->search_items = 'Search News';
    $labels->not_found = 'No News found';
    $labels->not_found_in_trash = 'No News found in Trash';
    $labels->all_items = 'All News';
    $labels->menu_name = 'News';
    $labels->name_admin_bar = 'News';
}
Nuno Sarmento
sumber