Lista de tags e índice de tags para o tipo de postagem personalizado

4

Problema do Wordpress:

Eu tenho um tipo de postagem personalizado: custom-post-type .

register_post_type( 'custom-post-type', array(
  'label' => __('Custom Post Type'),
  'public' => true,
  'show_ui' => true,
  '_builtin' => false, // It's a custom post type, not built in
  '_edit_link' => 'post.php?post=%d',
  'capability_type' => 'post',
  'hierarchical' => false,
  'rewrite' => array("slug" => "custom-posts"), // Permalinks
  'query_var' => "custom-post-type",
  'menu_position' => 30,
  'supports' => array('title', 'excerpt', 'editor', 'thumbnail',),
  'taxonomies' => array('category', 'custom-taxonomy'),
  'has_archives' => true,
));

Eu tenho uma taxonomia: custom-taxonomy

register_taxonomy(
  'custom-taxonomy',
  array('custom-taxonomy'),
  array(
    'hierarchical' => false,
    'labels' => array (
    'name' => _x( 'Custom Taxonomy', 'taxonomy general name' ),
      'singular_name' => _x( 'Custom Taxonomy', 'taxonomy singular name' ),
      'search_items' =>  __( 'Search Custom Taxonomy' ),
      'all_items' => __( 'All Custom Taxonomy' ),
      'edit_item' => __( 'Edit Custom Taxonomy' ), 
      'update_item' => __( 'Update Custom Taxonomy' ),
      'add_new_item' => __( 'Add New Custom Taxonomy' ),
      'new_item_name' => __( 'New Custom Taxonomy' ),
      'menu_name' => __( 'Custom Taxonomy' ),
    ),
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array('slug' => 'custom-taxonomy', 'with_front' => true),
  )
);

Eu preciso criar uma lista de tags com base nas tags atribuídas a custom-post-type . Eu precisaria de cada tag para vincular a uma página de índice para essa tag, específica para o tipo de postagem personalizada.

Por exemplo:

\tag\mytag traz de volta cada postagem com a tag mytag . \custom-posts\tag\mytag traria de volta cada mensagem do tipo custom-posts com a tag mytag .

Espero transformar qualquer solução em um plug-in do Wordpress.

=============================================== ============== EDIT: Grande avanço.

As reescritas do Wordpress são um mistério para mim. Suspeitei que as regras de reescrita podem estar desempenhando um papel em minhas dificuldades, mas não consegui lidar com a depuração das regras.

Nos passos The Monkeyman Rewrite Analyzer . Este plugin detalha suas regras de reescrita do Wordpress e lista todas elas em ordem de aplicação. Além disso, você pode passar por um caminho para descobrir quais regras combinam e em qual ordem.

Depois de alguns ajustes e mais investigações, mudei o caminho de reescrita da taxonomia para "custom-posts / tag". Isso colocou em prática a regra de reescrita correta, mas o analisador de reescrita sugeriu que /custom-post/tag/mytag correspondia aos pós-anexos, mas a reescrita da taxonomia estava presente mais abaixo na lista.

Eu tentei trocar a ordem em que declarei minha taxonomia e tipo de postagem e alterei alguns detalhes, como a regra de reescrita de taxonomia. Com a adição de um dummy taxonomy-custom-taxonomoy.php eu tenho uma página que não faz 404.

register_taxonomy(
  'custom-taxonomy',
  array('custom-post-type'),
  array(
    'hierarchical' => false,
    'labels' => array (
      'name' => _x( 'Custom Taxonomy Tags', 'taxonomy general name' ),
      'singular_name' => _x( 'Custom Taxonomy Tag', 'taxonomy singular name' ),
      'search_items' =>  __( 'Search Custom Taxonomy Tags' ),
      'all_items' => __( 'All Custom Taxonomy Tags' ),
      'edit_item' => __( 'Edit Custom Taxonomy Tags' ), 
      'update_item' => __( 'Update Custom Taxonomy Tags' ),
      'add_new_item' => __( 'Add New Custom Taxonomy Tags' ),
      'new_item_name' => __( 'New Custom Taxonomy Tag' ),
      'menu_name' => __( 'Custom Taxonomy Tags' ),
    ),
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array('slug' => 'custom-posts/tag', 'with_front' => true),
  )
);
register_post_type( 'custom-post-type', array(
    'label' => __('custom Post'),
    'public' => true,
    'show_ui' => true,
    '_builtin' => false, // It's a custom post type, not built in
    '_edit_link' => 'post.php?post=%d',
    'capability_type' => 'post',
    'hierarchical' => false,
    'rewrite' => array("slug" => "custom-posts"), // Permalinks
    'query_var' => "custom-posts",
    'menu_position' => 30,
    'supports' => array('title', 'excerpt', 'editor', 'thumbnail',),
    'taxonomies' => array('category', 'custom-taxonomy'),
    'has_archives' => true,
));

Em seguida, vou descobrir como fazer com que o modelo exiba os artigos, mas estou de volta ao território familiar!

Talvez isto não precise de um plugin depois de tudo!

    
por Glorfindel 03.08.2012 / 14:14

1 resposta

1

Existe uma função do Wordpress chamada get_terms . Isso fornecerá a saída da sua taxonomia personalizada em todo o site.

Eu também incluí insight sobre como usar o suporte de tags nativas do Wordpress ao registrar seu tipo de post personalizado e modelos personalizados para taxonomias.

Se você deseja recuperar todas as instâncias de sua taxonomia personalizada e formatar uma lista , use get_the_term_list e use sua taxonomia personalizada como o parâmetro 2 da função.

<?php get_the_term_list( $id, $taxonomy, $before, $sep, $after ) ?> 

Se você deseja recuperar as instâncias de sua taxonomia personalizada em por postagem , use wp_get_post_terms e use sua taxonomia personalizada como parâmetro 2 da função.

<?php $terms = wp_get_post_terms( $post_id, $taxonomy, $args ) ?>

Ao criar um tipo de postagem personalizado, você pode definir o argumento 'taxonomias' para utilizar a funcionalidade tag de postagem nativa do Wordpress.

'taxonomies' => array('category', 'tags', 'custom-taxonomy'),

Isso permitiria que você utilizasse as funções oferecidas para tags como the_tags ou wp_tag_cloud

Você também deve considerar um taxonomy.php porque o Wordpress usa como padrão a exibição de qualquer taxonomia de taxonomy.php. Isso também permitiria personalizar a aparência de taxonomias específicas devido a arquivos específicos desse termo. taxonomia- {taxonomia} - {slug} .php. Visite Hierarquia de modelos

    
por Brian Dillingham 13.08.2012 / 19:52