Cómo cambiar el nombre de las publicaciones predeterminadas tipo publicaciones

Respuestas:

9

Si simplemente desea cambiar el nombre de la apariencia de las publicaciones, en lugar de crear un tipo de publicación personalizado, agregue este código a su archivo de funciones themes.php.

// hook the translation filters
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 is PHP5 only
  return $translated;
}

En aras de la transparencia, obtuve este código de este artículo , aunque he usado trucos similares en el pasado.

supajb
fuente
2
Si bien esto está bien como muestra del concepto técnico, reemplazar algunas palabras en todo el texto localizado es demasiado amplio.
Rarst
¿Cómo afectará esto el rendimiento? ¿Los filtros anteriores solo se usan en el backend?
mikkelbreum 01 de
Creo que esta no es una buena solución para este caso particular. $ traducido puede contener una cadena como 'haga clic en el post man' o 'se om du har fået post' (danés), en cuyo caso NO querrá reemplazar 'post' por 'news'
mikkelbreum
9

Usé el siguiente script para cambiar el nombre del tipo de publicación predeterminado:

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

    $menu[5][0] = 'Portfolio';
    $submenu['edit.php'][5][0] = 'Portfolio';
    $submenu['edit.php'][10][0] = 'New Portfolio';
    $submenu['edit.php'][16][0] = 'Portfolio Tags';
    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 = 'New Portfolio';
    $labels->add_new_item = 'New Portfolio';
    $labels->edit_item = 'Edit Portfolio';
    $labels->new_item = 'New Portfolio';
    $labels->view_item = 'View Portfolio';
    $labels->search_items = 'Search Portfolio';
    $labels->not_found = 'Not found';
    $labels->not_found_in_trash = 'Not found in trash';
}
add_action( 'init', 'change_post_object_label' );
elbatron
fuente
7

Debe crear un tipo de mensaje personalizado, "Portafolio".

Las publicaciones son publicaciones. ¿Por qué tratar de usarlos como algo que no son, y luego tratar de cambiar su nomenclatura, en lugar de escribir una o dos funciones simples functions.php, que resultarán en tener la funcionalidad exacta y la nomenclatura exacta que desea?

Chip Bennett
fuente
Debido a que no he usado tipos de publicaciones personalizadas hasta hoy y el sitio web que configuré usa la función de blog para ejecutar un portafolio ya que el cliente no quiere un blog, así que pensé por qué no usar el blog configurado para ejecutar un portafolio. - Guardar reinventando la rueda, por así decirlo. Parece mucho más fácil cambiar los nombres de los manu que volver a hacer todo el sitio, ya que se ha agregado todo el contenido.
Evie Milo
Solo tomaría una consulta SQL para cambiar el post_type para todas las publicaciones afectadas, una vez que haya creado su tipo de publicación personalizada ...
Chip Bennett
1
Chip definitivamente es correcto aquí. Esto es lo que haría y lo que debería hacerse en un caso como este en mi humilde opinión.
mfields
2
El sql que necesita se parece un poco a esto UPDATE wp_posts SET post_type = 'funny-bunny' WHERE post_type = 'post';Es muy probable que necesite cambiar el prefijo de tabla (wp_) para reflejar esa configuración en su instalación actual.
mfields
2
Ruego diferir del honorable Chip Bennett ... Las publicaciones están ahí para organizar elementos en forma cronológica. ¿Por qué registrar otro post_type, cambiar las consultas, si todo lo que necesita ya está allí? En mis sitios web que no están en inglés, regularmente cambio los archivos de idioma de WordPress para que coincidan con la funcionalidad de Publicaciones, y le cambio el nombre a Noticias, Artículos o Portafolio.
brasofilo 01 de
2
// hook the translation filters
add_filter(  'gettext',  'change_post_to_article'  );
add_filter(  'ngettext',  'change_post_to_article'  );

function change_post_to_article( $translated ) {
     $translated = str_ireplace(  'Post',  'Article',  $translated );  // ireplace is PHP5 only
     return $translated;
}

Recibí este consejo de la revista Smashing y lo probé y funciona muy bien

http://www.smashingmagazine.com/2011/05/10/new-wordpress-power-tips-for-template-developers-and-consultants/
Negrita
fuente
1

Encontré este hilo cuando estaba buscando una solución para cambiar el tipo de publicación de un nombre a otro.

En lugar de hacer una consulta personalizada como lo sugirió alguien aquí, simplemente hice esto:

$post = get_post( $id );      // The current post id
$post->post_type = 'receipt'; // The new post type name
wp_update_post( $post );      // Updating the new information

El cpt tiene que ofc ya ha sido creado y formateado.

superhéroe
fuente
1

Cambiar el nombre de las publicaciones a la cartera

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] = __("New Item", 'litho');
    echo '';
}
function litho_posts_portfolio_label() {
    global $wp_post_types;
    $labels = &$wp_post_types['post']->labels;
    $labels->name = __("Portfolio", 'litho');
    $labels->singular_name = __("Item", 'litho');
    $labels->add_new = __("New Item", 'litho');
    $labels->add_new_item = __("New Item", 'litho');
    $labels->edit_item = __("Edit Item", 'litho');
    $labels->new_item = __("Item", 'litho');
    $labels->view_item = __("View Item", 'litho');
    $labels->search_items = __("Search Portfolio", 'litho');
    $labels->not_found = __("No Item Found", 'litho');
    $labels->not_found_in_trash = __("No Item found in Trash", 'litho');
}
add_action( 'init', 'litho_posts_portfolio_label' );
add_action( 'admin_menu', 'litho_posts_portfolio' );
davidcondrey
fuente
¿Cómo es eso diferente de la otra respuesta de @elbatron?
kaiser
@kaiser: esta respuesta es correcta, la que está marcada como la respuesta por parte del OP es incorrecta (mire las acciones: 'admin_menu' e 'init' están al revés. También esto responde a los usuarios la __()función.
David Gard
¿Por qué el echo '';?
Bill
0

Si solo desea cambiar la etiqueta del menú de administración de Publicar -> Portafolio, mire esta pregunta:

Cambio de etiquetas del menú de administración

[Actualizar]

Parece que este complemento Admin Menu Editor le permitirá cambiar las etiquetas del menú más fácilmente; sin embargo, no lo he probado.

anu
fuente
gracias Veré si puedo resolver algo de esto, aunque me parece un poco complicado.
Evie Milo
1
Agregué un enlace a un complemento que debería ayudarte
Anu
gracias por el enlace, pero quiero obtener más información sobre el archivo functions.php y evitar usar demasiados complementos. Seguí tu primer enlace y eventualmente me condujo aquí: new2wp.com/snippet/change-wordpress-posts-post-type-news y eso me ayudó a resolverlo muy rápido, ¡gracias por tu ayuda!
Evie Milo
@Evie Milo: debe marcar la respuesta como aceptada.
kaiser
0

Solo tendrá que crear otra publicación personalizada con las mismas capacidades que una publicación normal. Luego puede deshabilitar el menú Publicaciones con esto:

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');
Reineta
fuente
seguir esta ruta crearía demasiado trabajo adicional en esta etapa tardía del proyecto, no es algo que el presupuesto permitiría, ahora se ha agregado todo el contenido y solo quería ver si había una manera de cambiar el nombre de las publicaciones a la cartera para que fue menos confuso para el cliente.
Evie Milo
0

El get_post_type_object hará el trabajo.

add_action( 'init', 'ns_change_post_object' );
// Change dashboard Posts to 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 = 'Add News';
    $labels->add_new_item = 'Add News';
    $labels->edit_item = 'Edit News';
    $labels->new_item = 'News';
    $labels->view_item = 'View News';
    $labels->search_items = 'Search News';
    $labels->not_found = 'No News found';
    $labels->not_found_in_trash = 'No News found in Trash';
    $labels->all_items = 'All News';
    $labels->menu_name = 'News';
    $labels->name_admin_bar = 'News';
}
Nuno Sarmento
fuente