web-dev-qa-db-fra.com

Fermeture automatique (masquer) métabox personnalisé/définir l'état par défaut

J'utilise la fonction WordPress add_meta_box() pour ajouter ma propre métabox personnalisée.

Alors, comment puis-je fermer/cacher automatiquement à la page ouverte?

Actuellement, je viens d'ajouter une classe CSS closed à l'élément <div> de metabox via jQuery comme ceci:

HTML: (exemple)

<div id="my_metabox" class="postbox"></div>

jQuery:

$("#my_metabox.postbox").addClass("closed");

Mais existe-t-il une fonction WordPress pour le faire?

4
l2aelba

Accrocher dans postbox_classes. postbox_classes est la fonction qui va générer les classes pour la metabox.

apply_filters( "postbox_classes_{$page}_{$id}", $classes )

Votre code pourrait ressembler à ceci:

add_action( 'add_meta_boxes', 'add_my_metabox' );

function add_my_metabox() {
  $id       = 'my-metabox';
  $title    = 'My Metabox';
  $callback = 'my_metabox_content';
  $page     = 'post';

  add_meta_box( $id, $title, $callback, $page );

  add_filter( "postbox_classes_{$page}_{$id}", 'minify_my_metabox' );
}

function my_metabox_content() { ... }


/*
 * $classes is an array
 */
function minify_my_metabox( $classes ) {
  if ( isset( $_POST['my_condition'] ) && 'my_condition' == $_POST['my_condition'] ) {
    array_Push( $classes, 'closed' );
  }

  return $classes;
}
5
Ralf912

Le basculement de l'état d'ouverture/fermeture d'une métaboxe se fait via JS par WP également - bien évidemment, puisque cela se produit côté client dans son navigateur.

Le script qui fait cela passe par le handle 'postbox' *

Ce script fait la même chose que vous faites manuellement (ajoute une classe closed pour fermer les métaboxes). En outre, il vérifie l'état d'une métabox via if(e.hasClass("closed")).
Par conséquent, votre manière de définir l'état par défaut est tout à fait correcte.

* En aparté: si vous avez besoin de cette fonctionnalité sur des pages d’administrateur personnalisées, c’est ce qui doit être mis en file d'attente (wp_enqueue_scripts( 'postbox' );)

2
Johannes Pille