Como renomear Posts padrão do tipo posts

Respostas:

9

Se você quiser simplesmente renomear a aparência das postagens, em vez de criar um tipo de postagem personalizado, adicione esse código ao arquivo functions.php do seu tema.

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

Por uma questão de transparência, recebi esse código deste artigo , embora tenha usado truques semelhantes no passado.

supajb
fonte
2
Embora isso seja bom como exibição de conceito técnico, a substituição de alguma palavra em todo o texto localizado é excessivamente ampla.
Rarst
Como isso afetará o desempenho? Os filtros acima são usados ​​apenas no back-end?
Mikkelbreum #
Penso que esta não é uma boa solução para este caso em particular. $ translate pode conter uma string como 'clique no postman' ou 'se om du har fået post' (dinamarquês); nesse caso, você NÃO deseja substituir 'post' por 'news'
mikkelbreum
9

Usei o seguinte script para renomear o tipo de postagem padrão:

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

Você precisa criar um Tipo de postagem personalizado, "Portfólio".

Postagens são Postagens. Por que tentar usá-los como algo que não é e, em seguida, tentar alterar sua nomenclatura, em vez de escrever uma ou duas funções simples functions.php, resultando em ter a funcionalidade exata e a nomenclatura exata que você deseja?

Chip Bennett
fonte
Como eu não usei tipos de postagem personalizados até hoje e o site que eu configuro usa o recurso de blog para executar um portfólio, pois o cliente não deseja um blog - então pensei em por que não usar o blog configurado para executar um portfólio - economize reinventar a roda, por assim dizer. Parece muito mais fácil alterar os nomes dos manuais do que refazer todo o site, pois todo o conteúdo foi adicionado.
precisa
Seria preciso uma consulta SQL para mudar o post_type para todos os lugares afetados, uma vez que você criou seu costumizadas Postar Tipo ...
Chip Bennett
11
Chip está definitivamente correto aqui. Isto é o que eu faria e o que deveria ser feito em um caso como este IMHO.
Mfields
2
O sql que você precisa se parece um pouco com isso UPDATE wp_posts SET post_type = 'funny-bunny' WHERE post_type = 'post';Você provavelmente precisará alterar o prefixo da tabela (wp_) para refletir essa configuração na sua instalação atual.
mfields 13/05
2
Eu imploro para diferir do honorável Chip Bennett ... Existem posts para organizar elementos de maneira cronológica. Por que registrar outro post_type, alterar as consultas, se tudo o que você precisa já está lá? Nos meus sites em inglês, eu altero regularmente os arquivos de idioma do WordPress para corresponder à funcionalidade Postagens e o renomeio para Notícias, Artigos ou Portfólio.
Brasofilo
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;
}

Eu peguei essa dica da revista sensacional e testei e funciona muito bem

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

Encontrei esse segmento quando procurava uma solução para alterar o tipo de postagem de um nome para outro.

Em vez de fazer uma consulta personalizada, como sugerido por alguém aqui, eu simplesmente fiz isso:

$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

O cpt já deve ter sido criado e formatado.

Super heroi
fonte
1

Renomear postagens no portfólio

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
fonte
Qual é a diferença da outra resposta de @elbatron?
precisa
@ kaiser - Esta resposta está correta, a que está marcada como resposta pelo OP está incorreta (veja as ações - 'admin_menu' e 'init' estão no caminho errado. Além disso, essa resposta utiliza a __()função.
David Gard
Por que o echo '';?
Bill
0

Se você quiser apenas alterar o rótulo do menu do administrador em Post -> Portfolio, veja esta pergunta:

Alterando os rótulos do menu Admin

[Atualizar]

Este plugin Admin Menu Editor parece que permitirá que você altere os rótulos dos menus com mais facilidade - ainda não testei.

anu
fonte
obrigado Vou ver se consigo descobrir algo disso, embora pareça um pouco complicado para mim.
precisa saber é o seguinte
11
Eu adicionei um link para um plugin que deve ajudá-lo
anu
obrigado pelo link, mas quero entrar mais no arquivo functions.php e evitar o uso de muitos plugins. Eu segui o seu primeiro link e ele finalmente me levou aqui: new2wp.com/snippet/change-wordpress-posts-post-type-news e isso me ajudou a resolver o problema rapidamente - obrigado pela ajuda!
precisa saber é o seguinte
@ Evie Milo - você deve marcar a resposta como aceita.
Kaiser #
0

Você só precisará criar outra postagem personalizada com os mesmos recursos que uma postagem normal. Você pode desativar o menu Postagens com este:

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');
Pippin
fonte
seguir esse caminho criaria muito trabalho adicional nesta etapa final do projeto - não algo que o orçamento permitiria - todo o conteúdo foi adicionado e eu só queria ver se havia uma maneira de renomear as postagens para o portfólio, para que era menos confuso para o cliente.
precisa saber é o seguinte
0

O get_post_type_object fará o trabalho.

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
fonte