Come rinominare il tipo di post predefinito "Articoli" in WordPress

28 apr 2011, 16:49:37
Visualizzazioni: 19.5K
Voti: 10

Sto utilizzando il tipo di post "Articoli" per visualizzare elementi del portfolio e sembra strano avere il portfolio etichettato come articoli. C'è un modo per rinominare "Articoli" in "Portfolio" per meglio riflettere il suo utilizzo?

1
Commenti

questo plugin cambia i tipi di post: http://wordpress.org/extend/plugins/post-type-switcher/ penso che questo funzioni meglio in blocco http://wordpress.org/extend/plugins/convert-post-types/

helgatheviking helgatheviking
29 lug 2011 07:22:21
Tutte le risposte alla domanda 9
0
12

Ho utilizzato il seguente script per rinominare il tipo di post predefinito:

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

    $menu[5][0] = 'Portfolio';
    $submenu['edit.php'][5][0] = 'Portfolio';
    $submenu['edit.php'][10][0] = 'Nuovo Portfolio';
    $submenu['edit.php'][16][0] = 'Tag Portfolio';
    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 = 'Nuovo Portfolio';
    $labels->add_new_item = 'Nuovo Portfolio';
    $labels->edit_item = 'Modifica Portfolio';
    $labels->new_item = 'Nuovo Portfolio';
    $labels->view_item = 'Visualizza Portfolio';
    $labels->search_items = 'Cerca Portfolio';
    $labels->not_found = 'Non trovato';
    $labels->not_found_in_trash = 'Non trovato nel cestino';
}
add_action( 'init', 'change_post_object_label' );
28 set 2012 09:53:16
3
10

Se vuoi semplicemente rinominare l'aspetto degli articoli, invece di creare un tipo di contenuto personalizzato, aggiungi questo codice al file functions.php del tuo tema.

// aggancia i filtri di traduzione
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 è disponibile solo da PHP5
  return $translated;
}

Per completezza di informazione, ho preso questo codice da questo articolo, anche se ho usato trucchi simili in passato.

13 mag 2011 03:31:04
Commenti

Sebbene questo vada bene come dimostrazione di un concetto tecnico, sostituire alcune parole in tutto il testo localizzato è eccessivamente ampio.

Rarst Rarst
18 nov 2012 17:15:00

Come influirà sulle prestazioni? I filtri sopra menzionati sono utilizzati solo nel backend?

mikkelbreum mikkelbreum
1 ott 2014 12:16:56

Penso che questa non sia una buona soluzione per questo caso specifico. $translated potrebbe contenere una stringa come 'clicca sul postino' o 'se om du har fået post' (danese), in cui caso NON vorresti sostituire 'post' con 'news'

mikkelbreum mikkelbreum
1 ott 2014 12:22:55
6

È necessario creare un Custom Post Type chiamato "Portfolio".

I post sono post. Perché cercare di usarli come qualcosa che non sono, e poi tentare di cambiarne la nomenclatura, invece di scrivere una o due semplici funzioni in functions.php che ti permetteranno di ottenere sia l'esatta funzionalità che la precisa nomenclatura che desideri?

28 apr 2011 17:04:55
Commenti

Perché fino ad oggi non ho mai utilizzato i custom post type e il sito che ho configurato utilizza la funzionalità blog per gestire un portfolio, dato che il cliente non vuole un blog - quindi ho pensato, perché non usare l'impostazione del blog per gestire un portfolio invece - per non reinventare la ruota per così dire. Sembra molto più semplice cambiare i nomi dei menu che rifare l'intero sito visto che tutto il contenuto è già stato aggiunto.

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

Basterebbe una query SQL per cambiare il post_type per tutti i Post interessati, una volta che hai creato il tuo Custom Post Type...

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

Per un esperto come te forse - ma non per un principiante come me.

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

Chip ha sicuramente ragione qui. Questo è quello che farei e che dovrebbe essere fatto in un caso come questo secondo me.

mfields mfields
13 mag 2011 03:36:07

La query SQL di cui hai bisogno è più o meno questa UPDATE wp_posts SET post_type = 'funny-bunny' WHERE post_type = 'post'; Molto probabilmente dovrai cambiare il prefisso della tabella (wp_) per riflettere quell'impostazione nella tua installazione corrente.

mfields mfields
13 mag 2011 03:39:47

Mi permetto di dissentire dall'onorevole Chip Bennett... I post sono lì per organizzare gli elementi in ordine cronologico. Perché registrare un altro post_type, modificare le query, se tutto ciò di cui hai bisogno è già lì? Nei miei siti non in inglese modifico regolarmente i file di lingua di WordPress per adattarli alla funzionalità dei Post, e li rinomino in Notizie, Articoli o Portfolio.

brasofilo brasofilo
1 apr 2012 20:36:39
Mostra i restanti 1 commenti
0

La funzione get_post_type_object farà il lavoro.

add_action( 'init', 'ns_change_post_object' );
// Cambia i Post nel dashboard in 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 = 'Aggiungi News';
    $labels->add_new_item = 'Aggiungi News';
    $labels->edit_item = 'Modifica News';
    $labels->new_item = 'News';
    $labels->view_item = 'Visualizza News';
    $labels->search_items = 'Cerca News';
    $labels->not_found = 'Nessuna News trovata';
    $labels->not_found_in_trash = 'Nessuna News nel cestino';
    $labels->all_items = 'Tutte le News';
    $labels->menu_name = 'News';
    $labels->name_admin_bar = 'News';
}
16 mag 2020 01:48:16
0
// aggancia i filtri di traduzione
add_filter(  'gettext',  'change_post_to_article'  );
add_filter(  'ngettext',  'change_post_to_article'  );

function change_post_to_article( $translated ) {
     $translated = str_ireplace(  'Post',  'Articolo',  $translated );  // ireplace è solo per PHP5
     return $translated;
}

Ho ricevuto questo consiglio da Smashing Magazine e l'ho testato: funziona perfettamente

http://www.smashingmagazine.com/2011/05/10/new-wordpress-power-tips-for-template-developers-and-consultants/
12 mag 2011 17:57:57
0

Ho trovato questo thread mentre cercavo una soluzione per cambiare il tipo di post da un nome a un altro.

Invece di fare una query personalizzata come suggerito da qualcuno qui, ho semplicemente fatto questo:

$post = get_post( $id );      // ID del post corrente
$post->post_type = 'receipt'; // Il nuovo nome del tipo di post
wp_update_post( $post );      // Aggiornamento delle nuove informazioni

Il CPT deve ovviamente essere già stato creato e formattato..

10 nov 2012 13:11:19
3

Rinomina gli articoli in portfolio

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] = __("Nuovo elemento", 'litho');
    echo '';
}
function litho_posts_portfolio_label() {
    global $wp_post_types;
    $labels = &$wp_post_types['post']->labels;
    $labels->name = __("Portfolio", 'litho');
    $labels->singular_name = __("Elemento", 'litho');
    $labels->add_new = __("Nuovo elemento", 'litho');
    $labels->add_new_item = __("Nuovo elemento", 'litho');
    $labels->edit_item = __("Modifica elemento", 'litho');
    $labels->new_item = __("Elemento", 'litho');
    $labels->view_item = __("Visualizza elemento", 'litho');
    $labels->search_items = __("Cerca nel portfolio", 'litho');
    $labels->not_found = __("Nessun elemento trovato", 'litho');
    $labels->not_found_in_trash = __("Nessun elemento trovato nel cestino", 'litho');
}
add_action( 'init', 'litho_posts_portfolio_label' );
add_action( 'admin_menu', 'litho_posts_portfolio' );
19 giu 2014 07:53:03
Commenti

In cosa differisce dalla risposta di @elbatron?

kaiser kaiser
19 giu 2014 12:30:36

@kaiser - Questa risposta è corretta, quella segnata come risposta dall'OP è errata (guarda le azioni - 'admin_menu' e 'init' sono invertite. Inoltre questa risposta utilizza la funzione __().

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

Perché il echo '';?

Bill Bill
28 feb 2016 16:44:53
1

Dovrai semplicemente creare un altro custom post con le stesse funzionalità di un post regolare. Puoi poi disabilitare il menu Articoli con questo codice:

function remove_menus()
{
    global $menu;
    $restricted = array( __('Articoli')); // Aggiungi qui altri menu da rimuovere
    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'); // Hook per rimuovere i menu nell'admin
28 apr 2011 17:06:47
Commenti

seguire questa strada creerebbe troppo lavoro aggiuntivo in questa fase avanzata del progetto - qualcosa che il budget non permetterebbe - tutto il contenuto è già stato inserito e volevo solo vedere se c'era un modo per rinominare i post in portfolio così da renderlo meno confuso per il cliente.

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

Se vuoi solo cambiare l'etichetta del menu di amministrazione da "Post" a "Portfolio", allora guarda questa domanda:

Modificare le Etichette del Menu di Amministrazione

[Aggiornamento]

Questo plugin Editor del Menu di Amministrazione sembra permettere di cambiare le etichette dei menu più facilmente - non l'ho testato però.

28 apr 2011 17:22:40
Commenti

grazie, vedrò se riesco a capire qualcosa da questo, anche se sembra un po' complicato per me.

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

Ho aggiunto un link a un plugin che dovrebbe aiutarti

anu anu
28 apr 2011 18:19:28

grazie per il link, ma voglio approfondire di più il file functions.php ed evitare di usare troppi plugin. Ho seguito il tuo primo link e alla fine mi ha portato qui: http://new2wp.com/snippet/change-wordpress-posts-post-type-news/ e questo mi ha aiutato a risolvere il problema molto rapidamente - grazie per il tuo aiuto!

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

@Evie Milo - dovresti contrassegnare la risposta come accettata.

kaiser kaiser
29 apr 2011 02:54:37