it-swarm.com.de

Checkliste ausgewählter Kategorien

In meinem Blog gibt es eine große Anzahl von Kategorien> 500. Ich muss also eine Checkliste haben, welche Kategorien bereits ausgewählt sind, um mit der Auswahl fortfahren zu können.

Wenn wir zum Beispiel cat1, cat2, cat3 ... cat50 haben und cat3, cat5, cat7 und cat44 ausgewählt haben und mehr davon auswählen müssen, muss eine Checkliste vorhanden sein, die bereits ausgewählt ist (ähnlich wie Tags). Wenn Sie ein Tag auswählen, wird es durch Automatisierung überprüft und unter das Tag-Feld geschrieben.

Ich hoffe, Sie verstehen, wovon ich spreche.

Meine Frage ist also: Gibt es einen Vorschlag, wie man diesen entwickelt (nur Vorschlag, nicht ganzen Code), oder gibt es eine Art Plugin, das mir nicht bekannt ist?

Vielen Dank

BEARBEITEN:

Ich brauche dies im WordPress Admin-Bildschirm (neuen Beitrag hinzufügen)

5
Eager2Learn

Hier ist ein Skript, das Sie in Ihr Admin-Panel einreihen können. Es wird eine neue Registerkarte zu den Kategorie-Registerkarten mit dem Namen "Aktiv" hinzugefügt. Wenn ein Kontrollkästchen aktiviert ist, wird es zur Liste der aktiven Registerkarten hinzugefügt. Sie können auch auf Links in der Liste der aktiven Registerkarten klicken, um sie zu entfernen (deaktivieren).

 Category Metabox with Active Tab 

Fügen Sie dies als externes Skript hinzu, custom-tabs.js vielleicht:

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' );
            } );

        } );

    }

} );

Als nächstes können wir es in unser Admin-Panel einreihen:

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

Lassen Sie mich wissen, wenn Sie Probleme damit haben.

7
Howdy_McGee

Am einfachsten wäre es, ein Meta-Feld hinzuzufügen und mit get_the_category_list die Kategorien anzuzeigen, die bereits ausgewählt wurden. Dies funktioniert nur, wenn Sie Ihren Beitrag speichern, so wie die Tags erst in einem eigenen Feld angezeigt werden, nachdem Sie sie bestätigt haben.

Wenn Sie dies im laufenden Betrieb tun möchten, benötigen Sie Javascript, um Ihre Metabox zu füllen. Aktivieren Sie alle Kontrollkästchen in der ul, die die Liste der Kategorien enthält, und zeigen Sie die Beschriftung in Ihrer Metabox an, sobald die Beschriftung im Kategoriefeld aktiviert ist.

0
cjbj