Cómo renombrar el tipo de publicación predeterminado 'Posts'
Estoy usando el tipo de publicación 'Posts' para mostrar elementos de portafolio y se ve extraño tener el portafolio etiquetado como posts. ¿Hay alguna manera de renombrar 'Posts' a 'Portafolio' para reflejar mejor su uso?

Utilicé el siguiente script para renombrar el tipo de entrada predeterminado:
function change_post_menu_label() {
global $menu, $submenu;
$menu[5][0] = 'Portafolio';
$submenu['edit.php'][5][0] = 'Portafolio';
$submenu['edit.php'][10][0] = 'Nuevo Portafolio';
$submenu['edit.php'][16][0] = 'Etiquetas de Portafolio';
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 = 'Portafolio';
$labels->singular_name = 'Portafolio';
$labels->add_new = 'Nuevo Portafolio';
$labels->add_new_item = 'Nuevo Portafolio';
$labels->edit_item = 'Editar Portafolio';
$labels->new_item = 'Nuevo Portafolio';
$labels->view_item = 'Ver Portafolio';
$labels->search_items = 'Buscar Portafolio';
$labels->not_found = 'No encontrado';
$labels->not_found_in_trash = 'No encontrado en la papelera';
}
add_action( 'init', 'change_post_object_label' );

Si deseas simplemente renombrar la apariencia de las entradas, en lugar de crear un tipo de entrada personalizado, añade este código al archivo functions.php de tu tema.
// enganchar los filtros de traducción
add_filter( 'gettext', 'cambiar_entrada_a_portafolio' );
add_filter( 'ngettext', 'cambiar_entrada_a_portafolio' );
function cambiar_entrada_a_portafolio( $traducido ) {
$traducido = str_ireplace( 'Post', 'Portafolio', $traducido ); // ireplace solo funciona en PHP5
return $traducido;
}
En aras de la transparencia, obtuve este código de este artículo, aunque he usado trucos similares en el pasado.

Aunque esto está bien como demostración de un concepto técnico, reemplazar algunas palabras en todos los textos localizados es demasiado general.

¿Cómo afectará esto al rendimiento? ¿Los filtros mencionados solo se usan en el backend?

Necesitas crear un Custom Post Type, "Portafolio".
Las entradas son Entradas. ¿Por qué intentar usarlas como algo que no son, y luego tratar de cambiar su nomenclatura, en lugar de escribir una o dos funciones simples en functions.php
, que resultarán en tener tanto la funcionalidad exacta como la nomenclatura exacta que deseas?

Porque hasta hoy no había usado tipos de contenido personalizados y el sitio web que configuré utiliza la función de blog para mostrar un portafolio, ya que el cliente no quiere un blog - así que pensé, ¿por qué no usar la configuración del blog para mostrar un portafolio en su lugar? Así evito reinventar la rueda, por decirlo de alguna manera. Parece mucho más fácil cambiar los nombres del menú que rehacer todo el sitio, ya que todo el contenido ya ha sido añadido.

Solo haría falta una consulta SQL para cambiar el post_type de todas las publicaciones afectadas, una vez que hayas creado tu Tipo de Contenido Personalizado...

Chip definitivamente tiene razón aquí. Esto es lo que haría y lo que debería hacerse en un caso como este, en mi humilde opinión.

El SQL que necesitas se ve algo así UPDATE wp_posts SET post_type = 'funny-bunny' WHERE post_type = 'post';
Lo más probable es que necesites cambiar el prefijo de la tabla (wp_) para que coincida con esa configuración en tu instalación actual.

Me permito diferir del honorable Chip Bennett... Las entradas (Posts) están ahí para organizar elementos de forma cronológica. ¿Por qué registrar otro post_type, cambiar las consultas, si todo lo que necesitas ya está ahí? En mis sitios web no ingleses, regularmente cambio los archivos de idioma de WordPress para que coincidan con la funcionalidad de Posts, y lo renombro a Noticias, Artículos o Portafolio.

La función get_post_type_object hará el trabajo.
add_action( 'init', 'ns_change_post_object' );
// Cambiar las entradas del dashboard a Noticias
function ns_change_post_object() {
$get_post_type = get_post_type_object('post');
$labels = $get_post_type->labels;
$labels->name = 'Noticias';
$labels->singular_name = 'Noticia';
$labels->add_new = 'Añadir Noticia';
$labels->add_new_item = 'Añadir Noticia';
$labels->edit_item = 'Editar Noticia';
$labels->new_item = 'Noticia';
$labels->view_item = 'Ver Noticia';
$labels->search_items = 'Buscar Noticias';
$labels->not_found = 'No se encontraron Noticias';
$labels->not_found_in_trash = 'No hay Noticias en la papelera';
$labels->all_items = 'Todas las Noticias';
$labels->menu_name = 'Noticias';
$labels->name_admin_bar = 'Noticia';
}

// enganchar los filtros de traducción
add_filter( 'gettext', 'cambiar_post_a_articulo' );
add_filter( 'ngettext', 'cambiar_post_a_articulo' );
function cambiar_post_a_articulo( $traducido ) {
$traducido = str_ireplace( 'Post', 'Artículo', $traducido ); // ireplace solo para PHP5
return $traducido;
}
Conseguí este tip de Smashing Magazine y lo probé, funciona genial
http://www.smashingmagazine.com/2011/05/10/new-wordpress-power-tips-for-template-developers-and-consultants/

Encontré este hilo cuando buscaba una solución para cambiar el tipo de publicación de un nombre a otro.
En lugar de hacer una consulta personalizada como alguien sugirió aquí, simplemente hice esto:
$post = get_post( $id ); // ID de la publicación actual
$post->post_type = 'receipt'; // Nombre del nuevo tipo de publicación
wp_update_post( $post ); // Actualizando la nueva información
El CPT (tipo de publicación personalizado) debe, por supuesto, haber sido creado y formateado previamente..

Cambiar nombre de publicaciones a portafolio
function litho_posts_portfolio() {
global $menu;
global $submenu;
$menu[5][0] = __("Portafolio", 'litho');
$submenu['edit.php'][5][0] = __("Portafolio", 'litho');
$submenu['edit.php'][10][0] = __("Nuevo Elemento", 'litho');
echo '';
}
function litho_posts_portfolio_label() {
global $wp_post_types;
$labels = &$wp_post_types['post']->labels;
$labels->name = __("Portafolio", 'litho');
$labels->singular_name = __("Elemento", 'litho');
$labels->add_new = __("Nuevo Elemento", 'litho');
$labels->add_new_item = __("Nuevo Elemento", 'litho');
$labels->edit_item = __("Editar Elemento", 'litho');
$labels->new_item = __("Elemento", 'litho');
$labels->view_item = __("Ver Elemento", 'litho');
$labels->search_items = __("Buscar en Portafolio", 'litho');
$labels->not_found = __("No se encontraron elementos", 'litho');
$labels->not_found_in_trash = __("No hay elementos en la papelera", 'litho');
}
add_action( 'init', 'litho_posts_portfolio_label' );
add_action( 'admin_menu', 'litho_posts_portfolio' );

@kaiser - Esta respuesta es correcta, la que está marcada como respuesta por el OP es incorrecta (mira las acciones - 'admin_menu' e 'init' están en el orden incorrecto). Además, esta respuesta utiliza la función __()
.

Solo necesitarás crear otro tipo de entrada personalizada con las mismas capacidades que una entrada regular. Luego puedes deshabilitar el menú de Entradas con esto:
function remove_menus()
{
global $menu;
$restricted = array( __('Posts')); // 'Entradas' en español
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');

seguir por este camino generaría demasiado trabajo adicional en esta etapa tan avanzada del proyecto - algo que el presupuesto no permitiría - todo el contenido ya ha sido añadido y solo quería ver si había alguna manera de renombrar las publicaciones a "portfolio" para que fuera menos confuso para el cliente.

Si solo quieres cambiar la etiqueta del menú de administración de Post a Portfolio, entonces mira esta pregunta:
Cambiando Etiquetas del Menú de Administración
[Actualización]
Este plugin Editor de Menú de Administración parece que te permitirá cambiar las etiquetas del menú más fácilmente - aunque no lo he probado.

gracias, veré si puedo entender algo de esto, aunque parece un poco complicado para mí.

gracias por el enlace, pero quiero profundizar más en el archivo functions.php y evitar usar demasiados plugins. Seguí tu primer enlace y eventualmente me llevó aquí: http://new2wp.com/snippet/change-wordpress-posts-post-type-news/ y eso me ha ayudado a resolverlo muy rápido - ¡gracias por tu ayuda!
