2010-07-07 8 views
10

J'essaie d'utiliser le script de boîte de dialogue jQuery UI dans ma page d'administration de thème Wordpress. Tout est directement à partir de la démo de l'interface utilisateur et pourtant je me retrouve avec une boîte de dialogue qui ressemble à: http://flic.kr/p/8gAPt6 - notez que la boîte de dialogue n'est pas surgie au-dessus de tout et enterrée dans le coin inférieur, juste avant la balise de fermeture du corps. Le script de la boîte de dialogue de l'interface utilisateur est correctement mis en file d'attente avec le script wp_enqueue_script tel qu'il apparaît dans le code source, tout comme jquery (de google API) et le noyau de l'interface utilisateur.Boîte de dialogue Jquery UI dans wordpress admin

jQuery(document).ready(function($) { 
    $("#dialog").dialog(); 
}); //end onload stuff 

J'ai dans ma page d'options:

<div id="dialog" title="Basic dialog"> 
<p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p> 
</div> 
+0

bien je l'ai résolu. J'ai encore regardé la démo et il y a apparemment quelques scripts en file d'attente qui ne sont pas mentionnés en tant que dépendances. jquery.bgiframe-2.1.1.js.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js ", jquery.ui.position.js, jquery.ui .resizable.js tout semble être nécessaire en plus de l'évidence jquery.ui.dialog.js – helgatheviking

Répondre

27

Vous devriez être tout prêt aller. WP a déjà un dialogue et des styles pour cela.

Voici les étapes pour l'utiliser:

  1. Écrivez le jQuery pour créer la boîte de dialogue - vous devez utiliser le dialogClass de wp-dialog
  2. Enqueue le fichier ci-dessus sur init en utilisant les dépendances appropriées (jquery-ui-dialog)
  3. eNQUEUE les styles appropriés WP (wp-jquery-ui-dialog)

Par exemple:

// custom.js 
jQuery(function($) { 
    var $info = $("#modal-content"); 
    $info.dialog({     
     'dialogClass' : 'wp-dialog',   
     'modal'   : true, 
     'autoOpen'  : false, 
     'closeOnEscape' : true,  
     'buttons'  : { 
      "Close": function() { 
       $(this).dialog('close'); 
      } 
     } 
    }); 
    $("#open-modal").click(function(event) { 
     event.preventDefault(); 
     $info.dialog('open'); 
    }); 
});  

Dans votre PHP

add_action('admin_enqueue_scripts', 'queue_my_admin_scripts'); 

function queue_my_admin_scripts() { 
    wp_enqueue_script ( 'my-spiffy-miodal' ,  // handle 
         URL_TO_THE_JS_FILE ,  // source 
         array('jquery-ui-dialog')); // dependencies 
    // A style available in WP    
    wp_enqueue_style ( 'wp-jquery-ui-dialog'); 
} 
+1

une fois que j'ai fait les ajustements suivants, cela a fonctionné parfaitement: 1. j'ai $ info n'est pas défini des erreurs, b/c il est initialement défini comme $ modalContents . donc j'ai remplacé $ modalContents w/$ info. 2.Au lieu de l'ajouter partout sur le front-end ... je l'ai ajouté à admin_init. pourrait probablement devenir plus spécifique à ma page d'administration particulière. MERCI! – helgatheviking

+0

@helga - Ouais, en utilisant '$ info' était une faute de frappe, et' admin__init' est mieux - Merci! –

+2

Oh mon, dialogue vraiment moche. J'espère que les potes WordPress améliorer le look de celui-ci. Le bouton de fermeture X ressemble à un autre programme, et à quoi ressemblent les bordures? Au moins, l'aspect du bouton natif WP peut être atteint avec ceci: ''buttons': [{'text': 'Close', 'class': 'bouton-primary', 'click': function() {$ (this) .dialog ('close');}}] '(notez la classe * button-primary *) – Ciantic

0

Je ne sais pas si cela fait une différence (parce que je ne suis pas au bon endroit pour faire tout essai au moment), mais peut-être essayer le code exactement comme il est sur le site jQuery UI:

$(function() { 
    $("#dialog").dialog(); 
}); 

Bonne chance!^^

+2

merci, mais cela ne le résout pas. J'ai lu que vous devez utiliser jQuery (document) .ready (fonction ($) {}); pour envelopper les fonctions de jquery dans WP et avoir trouvé que pour être vrai w/le couple d'autres choses que j'ai réussi à faire fonctionner – helgatheviking

4

Je manged pour montrer la boîte de dialogue en utilisant le code suivant. (Mais le style n'a pas été appliquée!):

add_action('init', 'myplugin_load'); 

function myplugin_load(){ 
    wp_enqueue_script('jquery'); 
    wp_enqueue_script('jquery-ui-core'); 
    wp_enqueue_script('jquery-ui-dialog'); 
} 

lors de l'appel utilisé:

$("#dialog-view").dialog({ 
    height: 240, 
    modal: true 
}); 
+1

si vous mettez en jquery-ui-dialog' ses dépendances seront automatiquement mises en file d'attente, Vous n'avez donc pas besoin d'ajouter 'jquery' et' jquery-ui-core' Vous pouvez simplement mettre en file d'attente votre JS comme: 'wp_enqueue_script ('mon-script-handle', URL_TO_MY_SCRIPT, array ('jquery-ui-dialog')); ' –

Questions connexes