Como adicionar tags ao tipo de postagem personalizada?


28

Eu tenho um tipo de postagem personalizado chamado portfolioe estou tentando adicionar a taxonomia de tags, como faço isso?


@chifliiiii Se eu fizer isso, as categorias e tags são as mesmas usadas para as postagens. Como obtenho categorias e tags exclusivas para o novo tipo de postagem?
Troy Templeman

@chifliiiii Como exibir as tags no modelo?
Max

Respostas:


15

Assim: (Onde diz "portfólio" é onde você registra a taxonomia em um tipo de postagem

add_action( 'init', 'create_tag_taxonomies', 0 );

//create two taxonomies, genres and tags for the post type "tag"
function create_tag_taxonomies() 
{
  // Add new taxonomy, NOT hierarchical (like tags)
  $labels = array(
    'name' => _x( 'Tags', 'taxonomy general name' ),
    'singular_name' => _x( 'Tag', 'taxonomy singular name' ),
    'search_items' =>  __( 'Search Tags' ),
    'popular_items' => __( 'Popular Tags' ),
    'all_items' => __( 'All Tags' ),
    'parent_item' => null,
    'parent_item_colon' => null,
    'edit_item' => __( 'Edit Tag' ), 
    'update_item' => __( 'Update Tag' ),
    'add_new_item' => __( 'Add New Tag' ),
    'new_item_name' => __( 'New Tag Name' ),
    'separate_items_with_commas' => __( 'Separate tags with commas' ),
    'add_or_remove_items' => __( 'Add or remove tags' ),
    'choose_from_most_used' => __( 'Choose from the most used tags' ),
    'menu_name' => __( 'Tags' ),
  ); 

  register_taxonomy('tag','portfolio',array(
    'hierarchical' => false,
    'labels' => $labels,
    'show_ui' => true,
    'update_count_callback' => '_update_post_term_count',
    'query_var' => true,
    'rewrite' => array( 'slug' => 'tag' ),
  ));
}
?>

@JoeBobby provavelmente seria vale a pena conferir a página do WordPress Codex para registrar taxonomias para obter uma sensação melhor para todas as opções disponíveis: codex.wordpress.org/Function_Reference/register_taxonomy
Stephen S.

8
Apenas observe que isso está criando uma nova taxonomia chamada 'tag', em vez de adicionar a taxonomia 'post_tag' existente ao tipo de postagem personalizada.
Jake

@chifliiiii como obter estas tags em página de postagem única com etiquetas de links, como criar um modelo para a página tag
Dinesh

1
Eu concordo com Jake, sinto que isso não resolve o problema. A resposta de @Marcus deve ser a marcada como aceita.
Craig Wayne

58

Ou apenas adicione:

'taxonomies' => array('post_tag')

Uma variedade de taxonomias registradas como category ou post_tagque serão usadas com esse tipo de postagem. Isso pode ser usado no lugar de chamar register_taxonomy_for_object_type()diretamente. As taxonomias personalizadas ainda precisam ser registradas register_taxonomy().

para a $argsmatriz no functions.phparquivo-onde você cria o tipo de postagem personalizado comregister_post_type() .


2
Por favor, adicione uma explicação à sua resposta: por que isso poderia resolver o problema?
fuxia

5

Usa isto:

add_action( 'init', 'gp_register_taxonomy_for_object_type' );
function gp_register_taxonomy_for_object_type() {
    register_taxonomy_for_object_type( 'post_tag', 'portfolio' );
};

1

Método 1 (das respostas acima: https://wordpress.stackexchange.com/a/106211/38771 )

Diferentes tipos de postagem usarão os mesmos dados "Tags" do tipo "postagem" padrão.

  • Benefícios

    • Tudo (deveria) funciona fora da caixa com uma linha

    • Todas as suas tags em um só lugar no CMS

  • Desvantagens

    • Esqueça um CMS bem estruturado / fácil de usar - a listagem de Tags na página de tipos de postagem personalizados exibirá todas as Tags (não apenas as tags usadas nos artigos de tipo de postagem personalizados) com a contagem errada ...
    • As alterações em uma tag afetarão os artigos "post" padrão, bem como os artigos personalizados do tipo post (a exclusão de uma tag a exclui nos dois tipos de artigos)
    • Mais difícil (possivelmente impossível) de configurar qualquer funcionalidade distinta de Tag: descrições diferentes, campos personalizados, imagens, etc. (pelo menos não sem muita codificação personalizada sobre o código principal do Wordpress) ...

Método 2 (das respostas acima: https://wordpress.stackexchange.com/a/62263/38771 )

Diferentes tipos de postagens usam diferentes configurações / dados de "Tags".

  • Benefícios

    • Crie funcionalidades relacionadas a tags diferentes / claramente distintas : modelos de front-end, recursos, filtros de consulta, ações)
    • Atribua diferentes dados relacionados a tags : dados de campos ou mesmo campos personalizados
    • Gerenciar tags melhor no CMS
      • Exemplo : editar / excluir uma tag "post" não afetará a tag (com nome / slugged similar) para os outros tipos de postagem
  • Troca

    Um pouco mais de código para configurar

Na verdade, eles são uma maneira extremamente poderosa de agrupar vários itens de todos os tipos. https://codex.wordpress.org/Taxonomies#Custom_Taxonomies


Aqui está o caso do Método 1: Um site de esportes grande, que abrange vários tópicos / ligas / esportes com tags, por exemplo, "NBA", "NHL", "Basquete", "Olimpíadas", "Esteróides", "Colégio", etc. não faz sentido duplicar e gerenciar o que podem ser +100 tags e 4 tipos de postagem (tipo de postagem padrão e 3 tipos de postagem personalizados). Quanto às desvantagens, se os dados da contagem de tags forem tão especiais, uma visualização personalizada poderá ser feita para isso. Quanto a tags personalizadas semelhantes por tipo de postagem, ainda não parece haver nenhuma necessidade óbvia (tentando pensar em uma ... precisa de exemplos).
MarsAndBack 12/01

Sim, mas não haverá automaticamente permalinks de tags diferentes para diferentes tipos de postagem. Uma tag "playoffs" terá "/ tag / playoffs" para todos os tipos de postagem. Então você precisa configurar regras de reescrita ou usar parâmetros GET para criar links permanentes diferentes ... Com uma taxonomia diferente para cada tipo de postagem, cada tag "playoffs" para cada tipo de post terá seu próprio link permanente, que pode ser personalizado usando o Wordpress 'Template Hierarquia. Isso é bom se páginas diferentes de "playoffs" são diferentes para NBA, NHL ... Eu trabalhei em um site com esse nível de personalização para taxonomias (campos personalizados, imagem da taxonomia, descrição)
PS

1
Entendo o que você está dizendo. Portanto, se você optar por diferentes taxonomias de tags por CPT, que tal fazê-lo quando você adiciona / edita um termo em um imposto, ele é alterado nos outros impostos, ou seja, nos termos únicos sincronizados entre os impostos. por exemplo, defina "Basquete" uma vez, digamos em Publicar imposto de tags, depois que você clicar em salvar, "Basquete" também será criado de maneira exclusiva em outros impostos para CPTs. Portanto, insira / edite uma tag uma vez e a alteração será refletida em vários impostos sobre tags. No final, você obtém o gerenciamento de tags em um destino, além de uma situação mais permanente de permalink.
MarsAndBack 15/01

Sim, esse seria realmente um ótimo método se o site compartilhar as mesmas informações básicas de taxonomias (título) para vários CPTs, além de oferecer a opção de personalizar ainda mais essas taxonomias (campos personalizados, imagens, etc.) para CPT diferentes. Agradável!
PS

0

Basta usar este código para ajudá-lo

 add_action( 'init', 'create_client_tax' );
function create_client_tax() {
    register_taxonomy( 
            'client_tag', //your tags taxonomy
            'client',  // Your post type
            array( 
                'hierarchical'  => false, 
                'label'         => __( 'Tags', CURRENT_THEME ), 
                'singular_name' => __( 'Tag', CURRENT_THEME ), 
                'rewrite'       => true, 
                'query_var'     => true 
            )  
        );
}

Uma versão simplificada da resposta já aceita. Além disso, isso também adiciona uma taxonomia totalmente nova, em vez de usar a taxonomia 'post_tag' existente.
acidrums4
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.