UI de taxonomia hierárquica


11

Eu não gosto da maneira como as taxonomias são exibidas no administrador do Wordpress e queria saber se alguém sabia a melhor maneira de conectar e alterá-lo. Atualmente, se eu selecionar alguns termos na minha postagem, esses termos selecionados vão para o topo da lista e a hierarquia é quebrada, tornando-o visualmente confuso para o usuário.

Por favor, veja estas imagens para ter uma idéia do que estou falando

insira a descrição da imagem aqui insira a descrição da imagem aqui

Desejo exibir as taxonomias exatamente como elas são exibidas inicialmente com apenas os termos corretos marcados. Existe uma maneira de fazer isso sem ter que editar diretamente o núcleo do Wordpress, não consigo ver nenhum gancho para eu usar.

Obrigado por qualquer ajuda que você pode dar!

Helen


1
Isso acontece com todas as taxonomias heirárquicas, é extremamente irritante!
Tom J Nowell

Boa pergunta. +1.
Anh Tran

Respostas:



2

Backtrace

Vamos primeiro verificar onde isso realmente acontece:

A caixa de meta é adicionado em post.phpe post-new.phptelas.

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

Em seguida, movemos um arquivo para o núcleo para chegar à definição / retorno de chamada da meta box

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

A categorychecklistguia é a que contém a lista. Dentro do div, temos uma função chamada 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>

»Conclusão:

Isso significa que não temos uma chance real de interceptar isso no nível do servidor comum com filtros / ganchos WP e PHP.

Fazendo algo como ...

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

... simplesmente desabilitaria as caixas marcadas completamente.

será atualizado se eu tiver mais informações e (talvez uma solução)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.