Come rinominare il tipo di post predefinito "Articoli" in WordPress
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?

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

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.

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

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

È 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?

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.

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 ha sicuramente ragione qui. Questo è quello che farei e che dovrebbe essere fatto in un caso come questo secondo me.

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.

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.

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

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

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

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

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

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

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.

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

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

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!
