IU de taxonomía jerárquica

11

No me gusta la forma en que se muestran las taxonomías en el administrador de Wordpress y me preguntaba si alguien sabía la mejor manera de conectarlo y cambiarlo. Actualmente, si selecciono algunos términos dentro de mi publicación, esos términos seleccionados van al principio de la lista y la jerarquía se rompe, lo que lo hace visualmente confuso para el usuario.

Vea estas imágenes para tener una idea de lo que estoy hablando

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Quiero mostrar las taxonomías exactamente como se muestran inicialmente con solo los términos correctos marcados. ¿Hay alguna manera de hacer esto sin tener que editar el núcleo de Wordpress directamente? No puedo ver ningún gancho para usar.

¡Gracias por cualquier ayuda que puedas dar!

Helen

Decir algo
fuente
1
Eso sucede con todas las taxonomías jerárquicas, ¡es extremadamente molesto!
Tom J Nowell
Buena pregunta. +1.
Anh Tran

Respuestas:

2

Traza

Primero revisemos dónde sucede esto realmente:

El cuadro de meta se agrega post.phpy post-new.phppantallas.

# inside ~/wp-admin/edit-form-advanced.php
// TAGS:
if ( !is_taxonomy_hierarchical($tax_name) )
    add_meta_box('tagsdiv-' . $tax_name, $label, 'post_tags_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name ));
// CATEGORIES:
else
    add_meta_box($tax_name . 'div', $label, 'post_categories_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name ));

Luego movemos un archivo más profundo al núcleo para llegar a la definición / la devolución de llamada de meta box

// inside ~/wp-admin/meta-boxes.php
function post_categories_meta_box( $post, $box )

La categorychecklistpestaña es la que contiene la lista. Dentro del div, tenemos una función llamada wp_popular_terms_checklist($taxonomy);.

# inside ~/wp-admin/includes/template.php
<li id="<?php echo $id; ?>" class="popular-category">
<label class="selectit">
<input id="in-<?php echo $id; ?>" type="checkbox" <?php echo $checked; ?> value="<?php echo (int) $term->term_id; ?>" <?php echo $disabled ?>/>
    <?php echo esc_html( apply_filters( 'the_category', $term->name ) ); ?>
</label>
</li>

»Conclusión:

Esto significa que no tenemos una oportunidad real de interceptar esto en el nivel del servidor simple con filtros / ganchos WP y PHP.

Haciendo algo como ...

add_filter( 'wp_get_object_terms', '__return_empty_array', 20, 4 );

... simplemente deshabilitaría las casillas marcadas por completo.

se actualizará si tengo más información y (tal vez una solución)

emperador
fuente