Cum să redenumești tipul implicit de postări Posts
Folosesc tipul de postări Posts pentru a afișa elementele de portofoliu și pare ciudat să am portofoliul etichetat ca postări. Există vreo modalitate de a redenumi Posts în Portofoliu pentru a reflecta mai bine utilizarea sa.

Am folosit următorul script pentru a redenumi tipul de postare implicit:
function change_post_menu_label() {
global $menu, $submenu;
$menu[5][0] = 'Portofoliu';
$submenu['edit.php'][5][0] = 'Portofoliu';
$submenu['edit.php'][10][0] = 'Portofoliu Nou';
$submenu['edit.php'][16][0] = 'Etichete Portofoliu';
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 = 'Portofoliu';
$labels->singular_name = 'Portofoliu';
$labels->add_new = 'Portofoliu Nou';
$labels->add_new_item = 'Portofoliu Nou';
$labels->edit_item = 'Editează Portofoliu';
$labels->new_item = 'Portofoliu Nou';
$labels->view_item = 'Vezi Portofoliu';
$labels->search_items = 'Caută Portofoliu';
$labels->not_found = 'Nu s-a găsit';
$labels->not_found_in_trash = 'Nu s-a găsit în coșul de gunoi';
}
add_action( 'init', 'change_post_object_label' );

Dacă dorești să redenumești simplu apariția articolelor, în loc să creezi un tip de postare personalizat, adaugă acest cod în fișierul functions.php al temei tale.
// conectează filtrele de traducere
add_filter( 'gettext', 'change_post_to_portfolio' );
add_filter( 'ngettext', 'change_post_to_portfolio' );
function change_post_to_portfolio( $translated ) {
$translated = str_ireplace( 'Post', 'Portofoliu', $translated ); // ireplace este disponibil doar în PHP5
return $translated;
}
Pentru transparență, am obținut acest cod din acest articol, deși am folosit trucuri similare în trecut.

Deși acest lucru este potrivit pentru prezentarea unui concept tehnic, înlocuirea unor cuvinte în tot textul localizat este prea generală.

Cum va afecta acest lucru performanța? Filtrele de mai sus sunt utilizate doar în backend?

Trebuie să creezi un Custom Post Type, "Portfolio".
Articolele sunt Articole. De ce să încerci să le folosești ca pe ceva ce nu sunt, și apoi să încerci să le schimbi nomenclatura, în loc să scrii una sau două funcții simple în functions.php
, care vor rezulta în obținerea atât a funcționalității exacte, cât și a nomenclaturii exacte pe care le dorești?

Pentru că nu am folosit tipuri personalizate de articole până astăzi și site-ul pe care l-am configurat utilizează funcționalitatea de blog pentru a rula un portofoliu, deoarece clientul nu dorește un blog - așa că m-am gândit de ce să nu folosesc setările de blog pentru a gestiona un portofoliu în schimb - să evit reinventarea roții, ca să zic așa. Pare mult mai ușor să schimb denumirile din meniu decât să refac întregul site, având în vedere că toate conținuturile au fost deja adăugate.

Ar fi nevoie doar de o interogare SQL pentru a schimba post_type pentru toate articolele afectate, odată ce ai creat tipul tău personalizat de articol...

Pentru un expert ca tine, poate - dar nu și pentru un începător ca mine.

Chip are cu siguranță dreptate aici. Aceasta este ceea ce aș face și ceea ce ar trebui făcut într-un astfel de caz, după părerea mea.

SQL-ul de care ai nevoie arată cam așa UPDATE wp_posts SET post_type = 'funny-bunny' WHERE post_type = 'post';
Cel mai probabil va trebui să schimbi prefixul tabelei (wp_) pentru a reflecta această setare în instalarea ta curentă.

Permiteți-mi să nu fiu de acord cu stimatul Chip Bennett... Postările sunt acolo pentru a organiza elementele în mod cronologic. De ce să înregistrezi un alt post_type, să modifici interogările, dacă tot ce ai nevoie este deja acolo? Pe site-urile mele non-engleze, modific în mod regulat fișierele de limbă WordPress pentru a se potrivi cu funcționalitatea Postări și le redenumesc în Știri, Articole sau Portofoliu.

Funcția get_post_type_object va face treaba.
add_action( 'init', 'ns_change_post_object' );
// Schimbă denumirea Postărilor în Noutăți în panoul de administrare
function ns_change_post_object() {
$get_post_type = get_post_type_object('post');
$labels = $get_post_type->labels;
$labels->name = 'Noutăți';
$labels->singular_name = 'Noutate';
$labels->add_new = 'Adaugă Noutate';
$labels->add_new_item = 'Adaugă Noutate';
$labels->edit_item = 'Editează Noutate';
$labels->new_item = 'Noutate';
$labels->view_item = 'Vezi Noutate';
$labels->search_items = 'Caută Noutăți';
$labels->not_found = 'Nu s-au găsit Noutăți';
$labels->not_found_in_trash = 'Nu există Noutăți în Coșul de Gunoi';
$labels->all_items = 'Toate Noutățile';
$labels->menu_name = 'Noutăți';
$labels->name_admin_bar = 'Noutate';
}

// adaugă filtrele de traducere
add_filter( 'gettext', 'change_post_to_article' );
add_filter( 'ngettext', 'change_post_to_article' );
function change_post_to_article( $translated ) {
$translated = str_ireplace( 'Post', 'Articol', $translated ); // ireplace este disponibil doar în PHP5
return $translated;
}
Am primit acest sfat de la Smashing Magazine și l-am testat - funcționează excelent
http://www.smashingmagazine.com/2011/05/10/new-wordpress-power-tips-for-template-developers-and-consultants/

Am găsit acest fir de discuție în timp ce căutam o soluție pentru a schimba tipul de postare de la un nume la altul.
În loc să fac o interogare personalizată, așa cum a sugerat cineva aici, am făcut pur și simplu asta:
$post = get_post( $id ); // ID-ul postării curente
$post->post_type = 'receipt'; // Noul tip de postare
wp_update_post( $post ); // Actualizarea noilor informații
Tipul de postare personalizată (CPT) trebuie, desigur, să fie deja creat și configurat..

Redenumește postări în portofoliu
function litho_posts_portfolio() {
global $menu;
global $submenu;
$menu[5][0] = __("Portofoliu", 'litho');
$submenu['edit.php'][5][0] = __("Portofoliu", 'litho');
$submenu['edit.php'][10][0] = __("Element nou", 'litho');
echo '';
}
function litho_posts_portfolio_label() {
global $wp_post_types;
$labels = &$wp_post_types['post']->labels;
$labels->name = __("Portofoliu", 'litho');
$labels->singular_name = __("Element", 'litho');
$labels->add_new = __("Element nou", 'litho');
$labels->add_new_item = __("Element nou", 'litho');
$labels->edit_item = __("Editează element", 'litho');
$labels->new_item = __("Element", 'litho');
$labels->view_item = __("Vezi element", 'litho');
$labels->search_items = __("Caută în portofoliu", 'litho');
$labels->not_found = __("Niciun element găsit", 'litho');
$labels->not_found_in_trash = __("Niciun element găsit în coșul de gunoi", 'litho');
}
add_action( 'init', 'litho_posts_portfolio_label' );
add_action( 'admin_menu', 'litho_posts_portfolio' );

@kaiser - Acest răspuns este corect, cel marcat ca răspuns de OP este incorect (uită-te la acțiuni - 'admin_menu' și 'init' sunt inversate. De asemenea, acest răspuns folosește funcția __()
.

Va trebui doar să creați un alt articol personalizat cu aceleași capabilități ca un articol obișnuit. Apoi puteți dezactiva meniul Articole cu acest cod:
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');

a merge pe această cale ar crea prea multă muncă suplimentară în această etapă târzie a proiectului - nu ceva ce bugetul ar permite - tot conținutul a fost deja adăugat și voiam doar să văd dacă există o modalitate de a redenumi postările în portofoliu, astfel încât să fie mai puțin confuz pentru client.

Dacă dorești doar să schimbi eticheta din meniul de administrare de la Post -> Portofoliu, atunci uită-te la această întrebare:
Schimbarea Etichetelor din Meniul de Administrare
[Actualizare]
Acest plugin Editor de Meniu Admin pare să permită schimbarea etichetelor din meniu mai ușor - totuși nu l-am testat.

mersi, o să văd dacă pot să înțeleg ceva din asta, deși pare puțin complicat pentru mine.

mersi pentru link, dar vreau să aprofundez mai mult fișierul functions.php și să evit să folosesc prea multe plugin-uri. Am urmărit primul tău link și în cele din urmă m-a adus aici: http://new2wp.com/snippet/change-wordpress-posts-post-type-news/ și asta m-a ajutat să rezolv foarte repede - mersi pentru ajutor!
