选定类别清单

时间:2016-06-14 作者:Eager2Learn

在我的博客上,我有大量>500个类别,所以我需要有一些已经选择了哪些类别的检查表来继续选择。

例如,如果我们有cat1、cat2、cat3。。。cat50,我选择了cat3、cat5、cat7和cat44,并且需要选择更多,我需要有已经选择的检查表(类似于标签的内容,当您选择标签时,他会自动选中并写在标签框下方)。

我希望你明白我在说什么。

所以我的问题是-有什么建议如何开发这个(只有建议,而不是整个代码),或者可能有某种插件我不知道?

非常感谢。

EDIT:

I need this in WordPress admin (add new post) screen

2 个回复
最合适的回答,由SO网友:Howdy_McGee 整理而成

这里有一个脚本,您可以将其排入管理面板。它将在类别选项卡中添加一个名为“活动”的新选项卡。无论何时选中复选框,都会将其添加到“活动”选项卡列表中,您也可以单击“活动”选项卡列表中的链接将其删除(取消选中)。

Category Metabox with Active Tab

将此添加为外部脚本,custom-tabs.js 可能:

jQuery( document ).ready( function( $ ) {

    /* Ensure that there are category metaboxes */
    if( $( \'ul.category-tabs\' ).length ) {
        var taxonomies = [ \'category\', \'tag\' ]; /* Taxonomy Slugs ( category and tag are built-in ) */

        /* Loop through each category metabox and add a new tab */
        $.each( taxonomies, function( key, taxonomy ) {

            /* Add a checkbox listener */
            /* Whenever a checkbox is checked or unchecked, remove \'Active\' tab list item */
            $( \'#taxonomy-\' + taxonomy + \' ul.categorychecklist input[type="checkbox"]\' ).change( function() {
                var label   = $( this ).parent().text().trim();     /* Grab checkbox label */
                var value   = $( this ).val();                      /* Grab checkbox value */

                /* IF it is checked, add it to the \'Active\' tab */
                if( $( this ).is( \':checked\' ) ) {
                    $( \'#\' + taxonomy + \'-active ul\' ).append( \'<li data-val="\' + value + \'"><a href="javascript:void(0);"><span class="dashicons dashicons-no-alt" style="font-size:18px;text-decoration:none;margin-right:4px;"></span>\' + label + \'</a></li>\' );

                /* IF it is unchecked, remove it from the \'Active\' tab */
                } else {
                    $( \'#\' + taxonomy + \'-active li[data-val="\' + value +\'"]\' ).remove();
                }
            } );

            /* Add click listener to the newly added \'Active\' tab links */
            $( \'div.inside\' ).on( \'click\', \'#\' + taxonomy + \'-active a\', function() {
                var value = $( this ).parent().attr( \'data-val\' );

                /* Uncheck any values that have the clicked value */
                $( this ).parents( \'div.inside\' ).find( \'input[value="\' + value +\'"]\' ).prop( \'checked\', false );

                /* Remove \'Active\' tab link */
                $( this ).parent().remove();
            } );

            /* Append an \'Active\' tab */
            $( \'#\' + taxonomy + \'-tabs\' ).append( \'<li><a href="#\' + taxonomy + \'-active">Active</a></li>\' );
            $parent = $( \'#\' + taxonomy + \'-tabs\' ).parents( \'div.inside\' );

            /* Add the \'Active\' tab panel and content - display none */
            $parent.find( \'div.tabs-panel:last\' ).before( \'<div id="\' + taxonomy + \'-active" class="tabs-panel" style="display: none;"><ul></ul></div>\' );

            /* IF there are any checked values on load, trigger change. */
            $parent.find( \'#\' + taxonomy + \'-all input:checked\' ).each( function() {
                $( this ).trigger( \'change\' );
            } );

        } );

    }

} );
接下来,我们可以将其排入管理面板:

function load_custom_tabs_scripts() {
    wp_enqueue_script( \'custom_tabs\', get_template_directory_uri() . \'/scripts/custom-tabs.js\' );
}
add_action( \'admin_enqueue_scripts\', \'load_custom_tabs_scripts\' );
如果您遇到问题,请告诉我。

SO网友:cjbj

最简单的方法是添加一个元框并使用get_the_category_list 显示已选择的类别。这只有在保存帖子时才有效,就像标签只有在确认后才会显示在自己的框中一样。

如果您想即时完成此操作,您将需要javascript来填充元数据库。在ul 它保存类别列表,并在选中“类别”框中的标签后在元数据库中显示标签。

相关推荐

WP-ADMIN:“对不起,您不能访问此页面。”

两周后不使用我们的WP站点,登录/wp-admin/ 出现白屏错误:抱歉,不允许您访问此页面。我有:重命名plugins 到plugins.temp.通过phpMyAdmin创建了一个新的管理员用户。新用户已user_meta 的作用a:1:{s:13:"administrator";s:1:"1";}.</已重命名themes 到themes.temp.</删除核心WordPress文件,并替换为新上载的文件</已替换.htaccess 使用默认