web-dev-qa-db-de.com

So gruppieren Sie Meta-Boxen auf der Nachbearbeitungsseite

Ich vermute, dass dies momentan nicht möglich ist, aber na ja. Ich werde fragen, vielleicht hat einer von Ihnen einige interessante Gedanken, die er teilen kann.

Nehmen wir also an, wir haben die folgenden Meta-Boxen für Taxonomiebegriffe auf unserer Post-Edit-Seite:

  • Teambuchhaltung
  • Team Supergurus
  • Länder
  • Team-Entwickler
  • Lieblingseis

Wäre es nicht schön, die drei "Team" -Meta-Boxen in einer "Container" -Box namens "Teams" zusammenzufassen? Dies wäre ein gerechtes und leeres Meta-Feld mit einem Titel, der die drei Taxonomie-Meta-Felder enthält.

Das Ziel ist es, benutzerfreundlicher zu sein und die ähnlichen Meta-Boxen zu gruppieren (es kann sehr verwirrend werden, wenn Sie viele Taxonomien haben).

Glaubst du, das ist machbar?

4
mike23

Vielen Dank für den Hinweis Bainternet, dass dies mit jQuery sehr einfach zu implementieren ist.

Beispiel (die vier Meta-Boxen sind aus Gründen der Übersichtlichkeit geschlossen):

Example of four taxonomy meta-boxes grouped into a container meta-box

Folgendes habe ich getan:

var $j = jQuery.noConflict();
$j(document).ready(function() {
    $j("#side-sortables").append('<div id="container_div" class="postbox meta-box-sortables ui-sortable"><div class="handlediv" title="Click to toggle."><br></div><h3 class="hndle"><span>Container Meta Box</span></h3><div id="container_inside" class="inside"></div></div>');
    $j("#my_metabox_div").appendTo("#container_inside");
    $j("#my_other_metabox_div").appendTo("#container_inside");
    etc...
});

Ich habe die Klassen meta-box-sortables und ui-sortable zum Container div hinzugefügt. Auf diese Weise können Sie auch die Boxen innerhalb des Containers neu anordnen (obwohl es etwas schwierig ist, springt das div leicht).

Dieses Skript wird dann auf der gewünschten Administrationsseite aufgerufen:

function add_admin_scripts( $hook ) {
    // load script on new post page
    if ( $hook == 'post-new.php' ) {
        wp_enqueue_script( 'group_meta_boxes', get_bloginfo('template_directory').'/js/group_meta_boxes.js' );
    }
}
add_action('admin_enqueue_scripts','add_admin_scripts',10,1);
6
mike23