¿Pueden varios tipos de posts personalizados compartir una taxonomía personalizada?

26 mar 2013, 16:21:50
Vistas: 25.6K
Votos: 30

Estoy considerando reconstruir un sitio de Drupal en WordPress y todavía estoy asimilando las diferencias entre los sistemas - particularmente CCK/fields, tipos de contenido personalizados y las diferentes formas de usar taxonomías.

Me gustaría saber si dos tipos de contenido personalizados pueden compartir una taxonomía personalizada. En Drupal puedo limitar la publicación de un tipo de contenido particular a un grupo de usuarios y luego esa publicación puede tener una taxonomía que solo se comparte con uno o más tipos de contenido (pero no todos los tipos).

Dejando de lado el aspecto del usuario que parece posible con Role Scoper, ¿se puede hacer esto con WordPress? Solo he visto tipos de contenido personalizados con taxonomía personalizada, pero ninguna forma de compartir una taxonomía determinada entre 2 o más tipos de contenido personalizado sin tener que recrearla en dos lugares o habilitarla globalmente a través de categorías/etiquetas...

Gracias, -Chad.

1
Todas las respuestas a la pregunta 3
3
20

Compartir una taxonomía entre CPTs

Me gustaría saber si dos tipos de contenido personalizados pueden compartir una taxonomía personalizada.

En pocas palabras: Sí, pueden.

Cómo compartir

Debes siempre registrar las taxonomías personalizadas y los tipos de publicación entre sí lo más temprano posible.

Envuelve tu proceso de registro en una función, enganchada al hook init con la prioridad por defecto.

<?php
/** Plugin Name: Registrar $CPT y $CT */
add_action('init', function() {
    register_taxonomy(
        'some_custom_tax',
        'some_post_type',
        $array_of_arguments
    );
    register_post_type(
        'some_post_type',
        [
            'taxonomies' => [ 'some_custom_tax' ],
            // otros argumentos
        ]
    );
}, 10 ); # <-- prioridad por defecto

No importa si usas el 2º argumento para register_taxonomy() o si usas register_taxonomy_for_object_type(), ya que ambos hacen lo mismo: Toman el array $GLOBALS['wp_taxonomies'] y lo asignan al objeto (tipo) del tipo de publicación.

Nota importante

Solo asegúrate de registrar la CT y el CPT entre sí al momento de registrarlos. De lo contrario, no tendrás acceso a esa interconexión durante los hooks de consulta.

26 mar 2013 16:46:32
Comentarios

Un problema que he encontrado es que el administrador no muestra correctamente el número de publicaciones para un CPT una vez que el CT compartido se usa en otro lugar.

Meetai.com Meetai.com
6 mar 2014 09:23:13

No estoy seguro de seguir. La pregunta es sobre registrar un CT en múltiples CPTs. Esta respuesta parece mostrar el registro de un CPT y un CT entre sí en ambas direcciones.

That Brazilian Guy That Brazilian Guy
16 ene 2019 05:03:22

@ThatBrazilianGuy Sí, la respuesta lo hace. Por múltiples razones. Por favor lee la respuesta en detalle.

kaiser kaiser
21 abr 2020 01:04:54
1
15

Logré esto fácilmente pasando un array con todos los tipos de entradas personalizadas (Custom Post Types) que quiero que compartan la taxonomía, así que mi código quedó así:

add_action( 'init', 'build_taxonomies', 0 );
function build_taxonomies() {
   register_taxonomy( 'some_custom_tax', array('some_post_type_1','some_post_type_2'), array( 'hierarchical' => true, 'label' => 'Título de Taxonomía Personalizada', 'query_var' => true, 'rewrite' => true ) );   
}
31 mar 2017 16:11:36
Comentarios

Esta debería ser la respuesta aceptada en mi opinión. Concisa y directa al grano.

FaCE FaCE
21 jun 2019 14:33:00
0

Del Codex:

taxonomies

(array) (opcional) Un array de taxonomías registradas como category o post_tag que se usarán con este tipo de contenido. Esto puede usarse en lugar de llamar directamente a register_taxonomy_for_object_type(). Las taxonomías personalizadas aún necesitan registrarse con register_taxonomy().

Cuando registras tu tipo de contenido, asignas las taxonomías que soporta, o usas register_taxonomy_for_object_type() en algún otro momento para añadir la taxonomía al tipo de contenido.

Puedes asignar una taxonomía a tantos tipos de contenido como desees. Las taxonomías no están ligadas a un tipo de contenido específico.

26 mar 2013 16:33:42