it-swarm.com.de

Klicken Sie auf Gruppe der Metabox ausblenden, ähnlich dem Kontrollkästchen Bildschirmoptionen?

Ich habe mehrere Metaboxen im Bearbeitungsbildschirm.

Ich würde auch eine andere Metabox erstellen, in der der Benutzer auf ein Kontrollkästchen klicken und dann eine Reihe von Metaboxen ausblenden kann, ähnlich wie bei den Bildschirmoptionen. Nur wenn das Kontrollkästchen aktiviert ist, wird eine Gruppe von Metaboxen ausgeblendet/umgeschaltet.

Weiß jemand, wie er das angehen soll? Wenn nicht, wie lautet der Code, der vom Menü Bildschirmoptionen verwendet wird, das beim Klicken diktiert, Metabox ausblenden. ?

Vielen Dank.

1
John

Der Teil zum Umschalten der Boxen ist einfach genug, dass ich damit umgehen kann, aber das Speichern des Status der Boxen ist schwieriger. JS ist leider keine meiner Stärken und ich kann die Postfächer nicht dazu bringen, ihren Zustand zu retten. Das heißt, ich kann Ihnen zeigen, wie Sie Gruppen von Feldern umschalten und die Kontrollkästchen entsprechend anpassen. Ich werde dies in der Hoffnung posten, dass jemand anderes die fehlenden Links ausfüllen kann, um die Postfachzustände zu aktualisieren (ansonsten, wenn Sie aktualisieren) oder besuchen Sie den Bildschirm erneut (Gruppen von Feldern, für die Sie die Sichtbarkeit umgeschaltet haben, haben sich nicht an ihren Status erinnert).

HTML für die Toggle-Links

<p>
    <a class="metabox-group" id="group-1" href="#">Group 1</a> | 
    <a class="metabox-group" id="group-2" href="#">Group 2</a>
    <span class="hidden" id="meta-group-1">commentstatusdiv,commentsdiv</span>
    <span class="hidden" id="meta-group-2">categorydiv,tagsdiv-post_tag</span>
</p>  

Die Felder müssen keine Felder sein, Sie können natürlich Eingaben oder was auch immer verwenden, um eine durch Kommas getrennte Liste der Felder zum Umschalten (eine Liste ihrer IDs) zu halten.

jQuery/JS zum Umschalten

<script type="text/javascript">
    jQuery(document).ready(function($){

        // Attach a click function to links with the metabox-group class
        $('a.metabox-group').click(function(){

            // Find the element containing a list of elements to hide and split into array
            var box_group = $('#meta-'+this.id).text().split(',');

            // Ensure there's at least two items to toggle
            if( 2 > box_group.length )
                return false;

            // Loop over the pieces(the array of element IDs)
            $(box_group).each(function(){

                // Find and store the associated checkbox
                var toggle_checkbox = $('input#' + this + '-hide');

                // If the checkbox is currently unchecked
                if( !toggle_checkbox.is(':checked') ) {

                    // Show the metabox
                    $('#'+this).show();

                    //if ( $.isFunction( postboxes.pbshow ) )
                        //postboxes.pbshow( this );
                }
                // Else
                else {

                    // Hide the metabox
                    $('#'+this).hide();

                    //if ( $.isFunction( postboxes.pbhide ) )
                        //postboxes.pbhide( this );
                }
                // Toggle the checkbox 
                $(toggle_checkbox).attr('checked',!toggle_checkbox.is(':checked'));

            });

            //postboxes.save_state(page);

            return false;
        });
    });
</script>

Der Postfachcode, den Sie dort sehen, ist auskommentiert, da er nicht funktioniert (ich hatte gehofft, dass er funktioniert). Ich bin einfach nicht sachkundig genug, um zu wissen, was ich an dieser Front vermisse, aber ich habe ihn so gelassen andere in der lage zu helfen können sehen was ich probiert habe ..;)

Sorry, ich konnte keine vollständige Antwort geben, aber ich hoffe, das hilft trotzdem .. :)

1
t31os