WordPress: удалить раскрывающийся список «Родитель» из формы категории

Привет, я скачал плагин «Simple Staff List», и он делает то, что мне нужно, но я не хочу, чтобы редакторы создавали подкатегорию. Как удалить/скрыть поле выбора «Родительский» в форме?родительское поле выбора в форме


person moonunit7    schedule 12.07.2014    source источник
comment
Эээээ! Должно быть, мужчина посмотрел... только что нашел это: wordpress.stackexchange.com/questions/58799/   -  person moonunit7    schedule 12.07.2014


Ответы (6)


Добавьте приведенный ниже код в файл текущей темы function.php.

add_action( 'admin_head-edit-tags.php', 'wpse_58799_remove_parent_category' );

function wpse_58799_remove_parent_category()
{
    if ( 'category' != $_GET['taxonomy'] )
        return;

    $parent = 'parent()';

    if ( isset( $_GET['action'] ) )
        $parent = 'parent().parent()';

    ?>
        <script type="text/javascript">
            jQuery(document).ready(function($)
            {     
                $('label[for=parent]').<?php echo $parent; ?>.remove();       
            });
        </script>
    <?php
}
person lumos    schedule 12.07.2014
comment
Ответ скопирован из wordpress. stackexchange.com/questions/58799/ - person vancoder; 27.01.2015

Вы можете установить эти параметры в register_taxonomy() func

'hierarchical' => false,
'parent_item'  => null,
'parent_item_colon' => null,

Это удалит родительское поле.

person Adeel Raza    schedule 08.02.2017
comment
Ответ может быть не совсем правильным. 'hierarchical' => false действительно преобразует поле категорий в поле тега (а теги, естественно, не могут иметь родительских тегов), но 'parent_item' => null, 'parent_item_colon' => null, принадлежит массиву labels и не может находиться в одном массиве с параметром hierarchical. - person certainlyakey; 21.01.2018

Это удалит родительский раскрывающийся список как из таксономии, так и из экранов публикации новых/редактирований.

<?php

function remove_tax_parent_dropdown() {
    $screen = get_current_screen();

    if ( 'category' == $screen->taxonomy ) {
        if ( 'edit-tags' == $screen->base ) {
            $parent = "$('label[for=parent]').parent()";
        } elseif ( 'term' == $screen->base ) {
            $parent = "$('label[for=parent]').parent().parent()";
        }
    } elseif ( 'post' == $screen->post_type ) {
        $parent = "$('#newcategory_parent')";
    } else {
        return;
    }
    ?>

    <script type="text/javascript">
        jQuery(document).ready(function($) {     
            <?php echo $parent; ?>.remove();       
        });
    </script>

    <?php 
}
add_action( 'admin_head-edit-tags.php', 'remove_tax_parent_dropdown' );
add_action( 'admin_head-term.php', 'remove_tax_parent_dropdown' );
add_action( 'admin_head-post.php', 'remove_tax_parent_dropdown' );
add_action( 'admin_head-post-new.php', 'remove_tax_parent_dropdown' ); 
person elvismdev    schedule 27.07.2018

Если вы хотите отключить саму «иерархию» из таксономии категорий, добавьте этот код в свой function.php.

add_action('init', function(){
    global $wp_taxonomies;
    $wp_taxonomies['category']->hierarchical = false;
});
person Takahashi Ei    schedule 02.04.2019

Добавьте приведенный ниже код в файл function.php текущей темы.

function custom_taxonomy() {

    $labels = array(
        'name'                       => _x( 'Brands', 'Taxonomy General Name', 'text_domain' ),
        'singular_name'              => _x( 'Brand', 'Taxonomy Singular Name', 'text_domain' ),
        'menu_name'                  => __( 'Taxonomy', 'text_domain' ),
        'all_items'                  => __( 'All Items', 'text_domain' ),
        'parent_item'                => __( 'Parent Item', 'text_domain' ),
        'parent_item_colon'          => __( 'Parent Item:', 'text_domain' ),
        'new_item_name'              => __( 'New Item Name', 'text_domain' ),
        'add_new_item'               => __( 'Add New Item', 'text_domain' ),
        'edit_item'                  => __( 'Edit Item', 'text_domain' ),
        'update_item'                => __( 'Update Item', 'text_domain' ),
        'view_item'                  => __( 'View Item', 'text_domain' ),
        'separate_items_with_commas' => __( 'Separate items with commas', 'text_domain' ),
        'add_or_remove_items'        => __( 'Add or remove items', 'text_domain' ),
        'choose_from_most_used'      => __( 'Choose from the most used', 'text_domain' ),
        'popular_items'              => __( 'Popular Items', 'text_domain' ),
        'search_items'               => __( 'Search Items', 'text_domain' ),
        'not_found'                  => __( 'Not Found', 'text_domain' ),
        'no_terms'                   => __( 'No items', 'text_domain' ),
        'items_list'                 => __( 'Items list', 'text_domain' ),
        'items_list_navigation'      => __( 'Items list navigation', 'text_domain' ),
    );
    $args = array(
        'labels'                     => $labels,
        'hierarchical'               => true,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
        'parent_item'                => null,
        'parent_item_colon'          => null,
    );
    register_taxonomy( 'brands', array( 'product' ), $args );

}
add_action( 'init', 'custom_taxonomy', 0 );

введите здесь описание изображения

Ссылка: https://codex.wordpress.org/Function_Reference/register_taxonomy

person Zaheer Bashir    schedule 01.05.2020

Это будет работать с WordPress 5.4.2. Для меня все другие решения показывают поля, пока jQuery их удаляет. Мое быстрое и грязное решение скрывает через CSS и удаляет их с помощью jQuery. К сожалению, с редактором Gutenberg работает только скрытие (не удаление). Может у кого есть другое решение.

function remove_tax_parent_dropdown() {
    $screen = get_current_screen();
    
    if ( 'category' == $screen->taxonomy ) {
        if ( 'edit-tags' == $screen->base ) {
            $parent = "$('label[for=parent]').parent().remove(); ";
            $css = ".term-parent-wrap{display:none;}";
        } elseif ( 'term' == $screen->base ) {
            $parent = "$('label[for=parent]').parent().parent().remove(); ";
            $css = ".term-parent-wrap{display:none;}";
        }
    } elseif ( 'post' == $screen->post_type ) {
        $parent = "$('#newcategory_parent').remove();";
        $css = "div.components-base-control:nth-child(3){display:none;}";
    } else {
        return;
    }
    
    if(!empty($css)) {
        echo '<style type="text/css">';
            echo $css;
        echo '</style>';
    }
    
    if(!empty($parent)) {
        echo '<script type="text/javascript">';
            echo 'jQuery(document).ready(function($) {';     
            echo $parent;      
            echo '});';
        echo '</script>';
    }
}
add_action( 'admin_head-edit-tags.php', 'remove_tax_parent_dropdown' );
add_action( 'admin_head-term.php', 'remove_tax_parent_dropdown' );
add_action( 'admin_head-post.php', 'remove_tax_parent_dropdown' );
add_action( 'admin_head-post-new.php', 'remove_tax_parent_dropdown' ); 

Кстати, НЕ используйте следующий код, потому что с ним у вас возникнут серьезные проблемы. Когда вы сохраняете сообщение без изменения категории, все категории этого сообщения будут удалены, а идентификаторы категорий будут созданы как новые категории и добавлены к вашему сообщению.

global $wp_taxonomies;
$wp_taxonomies['category']->hierarchical = false;
person Steffan Schlüter    schedule 27.06.2020