Añadir etiquetas a un tipo de entrada personalizado
Estoy utilizando el framework Cherry en un sitio WordPress. Viene con un tipo de entrada personalizado que se puede usar para agregar 'Miembros del equipo' y crear páginas de personal, etc.
Necesito expandir esto para poder agregar etiquetas a cada 'miembro del equipo' y así poder etiquetarlos según el departamento donde trabajan (a / b / c / etc.).
El tipo de entrada personalizado está registrado en el archivo theme-init.php usando este código:
/* Nuestro Equipo */
function my_post_type_team() {
register_post_type( 'team',
array(
'label' => theme_locals("our_team"),
'singular_label' => theme_locals("our_team"),
'_builtin' => false,
// 'exclude_from_search' => true, // Excluir de los resultados de búsqueda
'capability_type' => 'page',
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => false,
'menu_position' => 5,
'menu_icon' => ( version_compare( $GLOBALS['wp_version'], '3.8', '>=' ) ) ? 'dashicons-businessman' : '',
'rewrite' => array(
'slug' => 'team-view',
'with_front' => FALSE,
),
'supports' => array(
'title',
'editor',
'thumbnail',
)
)
);
}
add_action('init', 'my_post_type_team');
Quiero agregar etiquetas a esto, para que cuando agregue un nuevo miembro del equipo, también pueda asignarlo a un departamento mediante etiquetas. Actualmente el cuadro de edición de etiquetas no aparece en la página de agregar/editar.
Entonces, adapté el código anterior para incluir un registro de taxonomía así:
/* Nuestro Equipo */
function my_post_type_team() {
register_post_type( 'team',
array(
'label' => theme_locals("our_team"),
'singular_label' => theme_locals("our_team"),
'_builtin' => false,
// 'exclude_from_search' => true, // Excluir de los resultados de búsqueda
'capability_type' => 'page',
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => false,
'menu_position' => 5,
'menu_icon' => ( version_compare( $GLOBALS['wp_version'], '3.8', '>=' ) ) ? 'dashicons-businessman' : '',
'rewrite' => array(
'slug' => 'team-view',
'with_front' => FALSE,
),
'supports' => array(
'title',
'editor',
'thumbnail',
)
)
);
register_taxonomy(
'team_tag',
'team',
array(
'hierarchical' => false,
'label' => theme_locals("tags"),
'singular_name' => theme_locals("tag"),
'rewrite' => true,
'query_var' => true
)
);
}
add_action('init', 'my_post_type_team');
Sin embargo, todavía no aparece el cuadro de etiquetas en la página de edición en el administrador.
Cualquier ayuda con esto será muy apreciada.

Parece que el problema se debía en parte a la existencia de un archivo theme-init.php en el tema hijo que estaba sobrescribiendo partes del theme-init.php en el tema padre / framework Cherry.
Resolví el problema añadiendo el siguiente código en el theme-init.php de mi tema hijo:
register_taxonomy('team_tag', 'team', array(
'hierarchical' => false,
'label' => theme_locals("tags"),
'singular_name' => theme_locals("tag"),
'rewrite' => true,
'query_var' => true
)
);

register_post_type( 'team',
array(
'label' => theme_locals("our_team"),
'singular_label' => theme_locals("our_team"),
'_builtin' => false,
// 'exclude_from_search' => true, // Excluir de los resultados de búsqueda
'capability_type' => 'page',
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => false,
'menu_position' => 5,
'menu_icon' => ( version_compare( $GLOBALS['wp_version'], '3.8', '>=' ) ) ? 'dashicons-businessman' : '',
'rewrite' => array(
'slug' => 'team-view',
'with_front' => FALSE,
),
'supports' => array(
'title',
'editor',
'thumbnail',
),
'taxonomies' => array('team_tag')
)
);
Puedes ver que he añadido el parámetro taxonomies
a la función register_post_type
.
Aunque este código debería funcionar, podrías intentar crear la relación más tarde, con esto:
add_action('init', 'add_tax_post_rel');
function add_tax_post_rel() {
register_taxonomy_for_object_type('team_tag', 'team', 11);
}

Gracias por la respuesta, pero eso no hace nada. Si cambio 'team_tag' por 'tag' y luego añado 'tags' al array de soporte, obtengo el cuadro de etiquetas en el submenú y en la página del editor. Sin embargo, esto utiliza las etiquetas globales del sitio.

@PhillHealey no puede ser, las etiquetas integradas están bajo la taxonomía post_tag
, no tag

Por favor, agrega respuestas adecuadas, es decir, si agregas código, explica qué hace tu código y cómo funciona. Gracias

Esto sí tiene un código casi idéntico sin una definición de función opaca a la que los usuarios no tienen acceso. En muchos sentidos, este debería ser el código utilizado en la respuesta aceptada ya que se aplica a todo WP, no solo al framework Cherry si no hay comentarios en el código o definición de función. Incluso provocó una pregunta de tu parte.

Puedes probar esto:
add_action( 'init', 'create_client_tax' );
function create_client_tax() {
register_taxonomy(
'client_tag', //tu taxonomía de etiquetas
'client', // Tu tipo de post
array(
'hierarchical' => false,
'label' => __( 'Etiquetas', CURRENT_THEME ),
'singular_name' => __( 'Etiqueta', CURRENT_THEME ),
'rewrite' => true,
'query_var' => true
)
);
}
Quizás esto te ayude

Si necesitas mostrar etiquetas (tags) para un tipo de publicación personalizada (custom post type), aquí tienes un buen ejemplo https://jamper.online/vyvod-tegov-tags-dlya-kastomnyh-postov-custom-post-type
function get_terms_by_custom_post_type( $post_type, $taxonomy ){
$args = array( 'post_type' => $post_type);
$loop = new WP_Query( $args );
$postids = array();
// construye un array con los IDs de las publicaciones
while ( $loop->have_posts() ) : $loop->the_post();
array_push($postids, get_the_ID());
endwhile;
// obtiene los valores de la taxonomía basados en el array de IDs
$taxonomies = wp_get_object_terms( $postids, $taxonomy );
wp_reset_postdata();
return $taxonomies;
}
