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.


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.


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' );

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?


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/

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 ..


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' );

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.


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');

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';
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.