Perfecto, asi sera mas facil.
Te comento una de las maneras de como lo haria para agrupar todas las taxonomias que creastes con el post type inmuebles.
No entrare en detalles pero como sabes lo basico creo que lo entenderas perfectamente.
Como lo tienes todo en plugin personalizado o eso he deducido lo primero que haremos sera añadir show_admin_column
si no existe en todas las taxonomias con el valor false, deberia quedarte asi 'show_admin_column' => false,
– Creas una function para aplicar al filtro manage_inmuebles_posts_columns
dentro añades la nueva columna.
function manage_inmuebles_posts_columns( $columns ) {
$columns['grupo_inmuebles'] = 'El nombre que quieras';
return $columns;
}
add_filter( 'manage_inmuebles_posts_columns', 'manage_inmuebles_posts_columns', 10 );
Ahora generaremos el contenido de la columna grupo_inmuebles
.
Como antes crearemos una function para lanzar el action manage_inmuebles_posts_custom_column
.
function manage_inmuebles_posts_custom_column( $column_name, $post_id ) {
if ( 'grupo_inmuebles' !== $column_name ) {
return;
}
$post = get_post( $post_id );
$taxonomies = get_object_taxonomies( $post->post_type, 'names' );
foreach ( $taxonomies as $taxonomy ) {
if ( in_array( $taxonomy, array( 'category', 'post_tag' ), true ) ) {
continue;
}
$taxonomy_object = get_taxonomy( $taxonomy );
$terms = get_the_terms( $post->ID, $taxonomy );
$output = '';
if ( is_array( $terms ) ) {
$out = array();
foreach ( $terms as $t ) {
$posts_in_term_qv = array(
'post_type' => $post->post_type,
);
if ( $taxonomy_object->query_var ) {
$posts_in_term_qv[ $taxonomy_object->query_var ] = $t->slug;
} else {
$posts_in_term_qv['taxonomy'] = $taxonomy;
$posts_in_term_qv['term'] = $t->slug;
}
$label = esc_html( sanitize_term_field( 'name', $t->name, $t->term_id, $taxonomy, 'display' ) );
$out[] = $this->get_edit_link( $posts_in_term_qv, $label );
}
/* translators: used between list items, there is a space after the comma */
$output .= join( __( ', ' ), $out );
} else {
$output .= '<span aria-hidden="true">—</span><span class="screen-reader-text">' . $taxonomy_object->labels->no_terms . '</span>';
}
printf( '<div><p>%s</p><p>%s</p></div>', $taxonomy_object->labels->name, $output );
}
}
add_action( 'manage_inmuebles_posts_custom_column', 'manage_inmuebles_posts_custom_column', 10, 2 );
Bueno con esto ya verias todas tus custom taxonomias en una sola columna, ahora ya seria cuestion de aplicar estilo u organizarlas de otra manera.
Yo simplemente he puesto un div
para cada taxonomia y por cada taxonomia muestro el nombre para saber que x terminos son de x taxonomia.
En los ejemplos he añadido debajo de cada function la llamada, pero seria mejor si se registran y llaman en el admin.
Si ya tienes un action de admin_init
en tu plugin añadelos dentro, sino tienes dos opciones o creas un action admin_init
o usas la condicional is_admin
-
Esta respuesta fue modificada hace 5 años por kallookoo.