2010-07-07 4 views
10

Я пытаюсь использовать скрипт диалога jQuery UI на моей странице администрирования темы Wordpress. Все прямо из демонстрации UI, и все же я получаю диалоговое окно, которое выглядит так: http://flic.kr/p/8gAPt6 - обратите внимание, что диалог не выставляется ни о чем и вместо этого похоронен в нижнем углу, перед закрывающим тегом тела.Диалоговое окно JQuery UI в wordpress admin

Скрипт диалога пользовательского интерфейса помещается в очередь правильно w/wp_enqueue_script как его показывает в исходном коде, как и jquery (из google API) и ядро ​​пользовательского интерфейса.

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

Тогда у меня есть это в моей странице вариантов:

<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

хорошо я решил. снова посмотрел на демонстрацию, и, по-видимому, существует довольно много скриптов, которые не указаны в качестве зависимостей. 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 все, кажется, необходимо в дополнение к очевидному jquery.ui.dialog.js – helgatheviking

ответ

27

Вы должны быть все готовы идти. WP уже имеет диалог и стили для него.

Вот шаги, чтобы использовать его:

  1. Написать JQuery для создания диалогового окна - вы должны использовать dialogClass из wp-dialog
  2. Ставить выше файл на init с использованием правильных зависимостей (jquery-ui-dialog)
  3. Ставить правильные WP стили (wp-jquery-ui-dialog)

Например:

// 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'); 
    }); 
});  

В вашем 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

после того, как я сделал следующие настройки, это сработало отлично. 1. Я получил $ info не определены ошибки, b/c изначально он был отформатирован как $ modalContents , поэтому я заменил $ modalContents w/$ info. 2.вместо того, чтобы входить в эту область во всем интерфейсе ... я добавил ее в admin_init. вероятно, может быть более конкретным для моей конкретной страницы администратора. БЛАГОДАРЯ! – helgatheviking

+0

@helga - Да, с использованием '$ info' была опечатка, а' admin__init' лучше - Спасибо! –

+2

О, мой, действительно уродливый диалог. Надеюсь, WordPress заглянет в глаза. Кнопка закрытия X выглядит так, как будто это из какой-то другой программы, и что с границами? По крайней мере, внешний вид кнопки WP можно получить с помощью этого: '' buttons ': [{' text ':' Close ',' class ':' button-primary ',' click ': function() {$ (this) .dialog ('close');}}] '(обратите внимание на класс * button-primary *) – Ciantic

0

Я не знаю, если это делает никакой разницы (потому что я не нахожусь в нужном месте, чтобы делать какие-либо испытания на данный момент), но, возможно, попробовать код в точности так, как это есть на сайте JQuery UI:

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

удачи!^^

+2

спасибо, но это не решает его. Я читал, что вам нужно использовать jQuery (document) .ready (function ($) {}); обертывать функции jquery в WP и обнаружил, что для истины w/пара других вещей мне удалось сделать работу – helgatheviking

4

Я сведущий, чтобы показать диалоговое окно, используя следующий код. (Но стиль не был применен!):

add_action('init', 'myplugin_load'); 

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

При вызове он используется:

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

, если вы ставите в очередь 'jquery-ui-dialog', его зависимости также будут автоматически занесены в очередь, поэтому вам не нужно добавлять 'jquery' и' jquery-ui-core'. Вы можете просто поставить в очередь свой JS как: 'wp_enqueue_script ('my-script-handle', URL_TO_MY_SCRIPT, array ('jquery-ui-dialog')); ' –

Смежные вопросы