Cum să redenumești tipul implicit de postări Posts

28 apr. 2011, 16:49:37
Vizualizări: 19.5K
Voturi: 10

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.

1
Comentarii

acest plugin schimbă tipurile de postări: http://wordpress.org/extend/plugins/post-type-switcher/ cred că acesta funcționează mai mult în masă http://wordpress.org/extend/plugins/convert-post-types/

helgatheviking helgatheviking
29 iul. 2011 07:22:21
Toate răspunsurile la întrebare 9
0
12

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' );
28 sept. 2012 09:53:16
3
10

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.

13 mai 2011 03:31:04
Comentarii

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

Rarst Rarst
18 nov. 2012 17:15:00

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

mikkelbreum mikkelbreum
1 oct. 2014 12:16:56

Cred că aceasta nu este o soluție bună pentru acest caz particular. $translated ar putea conține un șir precum 'click on the post man' sau 'se om du har fået post' (daneză), caz în care nu ai dori să înlocuiești 'post' cu 'news'.

mikkelbreum mikkelbreum
1 oct. 2014 12:22:55
6

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?

28 apr. 2011 17:04:55
Comentarii

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.

Evie Milo Evie Milo
28 apr. 2011 18:12:57

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

Chip Bennett Chip Bennett
28 apr. 2011 18:14:31

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

Evie Milo Evie Milo
28 apr. 2011 18:23:00

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.

mfields mfields
13 mai 2011 03:36:07

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

mfields mfields
13 mai 2011 03:39:47

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.

brasofilo brasofilo
1 apr. 2012 20:36:39
Arată celelalte 1 comentarii
0

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';
}
16 mai 2020 01:48:16
0
// 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/
12 mai 2011 17:57:57
0

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

10 nov. 2012 13:11:19
3

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' );
19 iun. 2014 07:53:03
Comentarii

Cum diferă acest răspuns de cel dat de @elbatron?

kaiser kaiser
19 iun. 2014 12:30:36

@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 __().

David Gard David Gard
16 apr. 2015 16:46:39

De ce folosești echo '';?

Bill Bill
28 feb. 2016 16:44:53
1

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');
28 apr. 2011 17:06:47
Comentarii

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.

Evie Milo Evie Milo
28 apr. 2011 18:15:04
4

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.

28 apr. 2011 17:22:40
Comentarii

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

Evie Milo Evie Milo
28 apr. 2011 18:13:30

am adăugat un link către un plugin care ar trebui să te ajute

anu anu
28 apr. 2011 18:19:28

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!

Evie Milo Evie Milo
28 apr. 2011 18:24:09

@Evie Milo - ar trebui să marchezi răspunsul ca acceptat.

kaiser kaiser
29 apr. 2011 02:54:37