Interfaccia utente di tassonomia gerarchica


11

Non mi piace il modo in cui le tassonomie vengono visualizzate all'interno dell'amministratore di Wordpress e mi chiedevo se qualcuno sapesse il modo migliore per collegarlo e cambiarlo. Attualmente, se seleziono alcuni termini all'interno del mio post, quei termini selezionati vanno in cima all'elenco e la gerarchia viene interrotta rendendolo visivamente confuso per l'utente.

Si prega di vedere queste immagini per un'idea di cosa sto parlando

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Voglio mostrare le tassonomie esattamente come sono visualizzate inizialmente con solo i termini corretti spuntati. Esiste un modo per farlo senza dover modificare direttamente il core di Wordpress, non riesco a vedere alcun hook da utilizzare.

Grazie per l'aiuto che puoi dare!

Helen


1
Questo succede con tutte le tassonomie erirarchiche, è estremamente fastidioso!
Tom J Nowell

Bella domanda +1.
Anh Tran,

Risposte:



2

backtrace

Per prima cosa controlliamo dove questo accade effettivamente:

Il meta box viene aggiunto post.phpe post-new.phpschermate.

# 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 ));

Quindi spostiamo un file più in profondità nel core per arrivare alla definizione / al callback della meta-box

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

La categorychecklistscheda è quella che contiene l'elenco. All'interno di div, abbiamo una funzione chiamata 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>

" Conclusione:

Ciò significa che non abbiamo una reale possibilità di intercettarlo a livello di server semplice con filtri / hook WP e PHP.

Fare qualcosa come ...

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

... disabiliterebbe semplicemente completamente le caselle selezionate.

aggiornerò se avessi più informazioni e (forse una soluzione)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.