web-dev-qa-db-fra.com

Un tableau de bord comme des méta-boîtes dans mon plugin - comment sauvegarder leur position et leur état ouvert/fermé?

J'essaie de reproduire l'interface utilisateur des boîtes à méta du tableau de bord dans mon plug-in WP - les petits métaboxes. Je les ai déjà stylées et la fonction glisser-déposer fonctionne lorsque j'ai chargé le script et le style suivants:

wp_enqueue_style('dashboard');
wp_enqueue_script('dashboard');

Cependant, je souhaite également sauvegarder ma position (ordre) personnalisée ainsi que l'état d'ouverture/fermeture.

Des idées comment cela pourrait-il être réalisé?

Merci.

UPDATE: Voici la structure de ma boîte aux lettres:

<div class="wrap">
    <h2><?php echo get_admin_page_title(); ?></h2>
    <div class="postbox-container" style="width: 100%">
        <div class="metabox-holder">
            <div class="meta-box-sortables">
                <div class="postbox" id="first">
                    <div class="handlediv" title="Click to toggle"><br /></div>
                    <h3 class="hndle"><span><?php echo get_admin_page_title(); ?></span></h3>
                    <div class="inside">
                        <p>first</p>
                    </div>
                </div>
                <div class="postbox" id="second">
                    <div class="handlediv" title="Click to toggle"><br /></div>
                    <h3 class="hndle"><span><?php echo get_admin_page_title(); ?></span></h3>
                    <div class="inside">
                        <p>second</p>
                    </div>
                </div>

            </div>
        </div>
    </div>

    <form style="display:none" method="get" action="">
        <?php wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false ); ?>
        <?php wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false ); ?>
    </form>
</div>
4
depi

Lors de la commande ou de la fermeture de métaboxes, ces actions nécessitent une nonces, ajoutez ce qui suit à votre code et voyez si cela résout le problème.

<?php wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false ); ?>
<?php wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false ); ?>

Supplémentaire:

Vous devriez ajouter des métaboxes à votre page en utilisant add_meta_box et les sortir en utilisant do_meta_boxes en passant le crochet de votre page de plugin en tant que premier argument. Cela devrait au moins vous assurer que vous les avez enregistrés et les avez sortis de la même manière que WordPress, et que vous produisez également les nonces appropriés, cela devrait fonctionner.

Si quelque chose ne fonctionne toujours pas, affichez la source sur la ou les pages de votre problème et vérifiez que les fichiers JS sont sortis dans le bon ordre (il est encore plus facile de comparer les inclusions JS de votre page avec une page WordPress principale qui utilise des métaboxes). vos dossiers JS (mises en file d'attente) apparaissent dans le même ordre).

4
t31os

Cela ne fonctionnera probablement pas si vous écrivez le code HTML à la main.

Mieux vaut utiliser do_metaboxes().

J'ai tout compris dans ma scbBoxesPage class:

http://plugins.trac.wordpress.org/browser/scb-framework/trunk/scb/BoxesPage.php?rev=339808

Exemple d'utilisation dans Front-end Editor plugin:

http://plugins.trac.wordpress.org/browser/front-end-editor/trunk/admin.php?rev=362968

Je devrais probablement écrire un bon exemple de plug-in qui utilise toutes ces classes.

3
scribu