Это печальный день в мире, когда я что-то гуглю и ничего не возвращаю. Я пытаюсь использовать средство выбора даты по умолчанию (или ЛЮБОЕ средство выбора даты в данный момент) и не могу из-за моего недостатка знаний в Wordpress / PHP. В своем плагине я пытаюсь зарегистрировать jquery и пользовательский интерфейс и, по-видимому, нарушаю другие части WordPress в процессе. Может кто-нибудь сказать мне, что я делаю неправильно, и если они могут предоставить работающее решение, я откажусь от всего моего кода:
add_action('init', 'add_styles');
function add_styles(){
wp_deregister_style('simpleschoolstyles');
wp_register_style('simpleschoolstyles', SSM_STYLEFILE);
wp_deregister_script( 'jquery' );
wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js');
wp_deregister_script( 'jquery-ui' );
wp_register_script('jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js');
wp_deregister_style( 'jquery-ui' );
wp_register_style( 'jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/pepper-grinder/jquery-ui.min.css' );
wp_deregister_script('maskedinput');
wp_register_script('maskedinput', SSM_PLUGIN_URL . '/includes/js/jquery.maskedinput.min.js');
wp_deregister_script('simpleschool');
wp_register_script('simpleschool', SSM_PLUGIN_URL . '/includes/js/simpleschool.js');
}
add_action('wp_enqueue_scripts', 'load_scripts');
add_action('admin_enqueue_scripts', 'load_scripts');
function load_scripts()
{
wp_enqueue_style('jquery-ui');
wp_enqueue_style('simpleschoolstyles');
wp_enqueue_script('jquery');
wp_enqueue_script('jquery-ui');
wp_enqueue_script('maskedinput');
wp_enqueue_script('simpleschool');
}
Мне нужно, чтобы jQuery был доступен как в административной области, так и во внешнем интерфейсе для ввода пользовательских данных. Пожалуйста, помогите кому-нибудь. Я почти отрываю ногти на ногах, так как уже вырвал все свои волосы ... Я предполагаю, что, должно быть, ставлю в очередь не в тот момент времени, но опять же, из-за моего ограниченного знания WordPress, я выкопал себя могила быстро.
ОБНОВЛЕНИЕ: я изменил свой скрипт и теперь загружаю только jQuery UI и проверил, что jQuery и UI оба загружены и имеют успех для этих двух, но не для существующего объекта в DOM:
add_action('init', 'init_scripts');
function init_scripts(){
wp_deregister_style('simpleschoolstyles');
wp_register_style('simpleschoolstyles', SSM_STYLEFILE);
//wp_deregister_script( 'jquery-ui' );
wp_register_script('jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js');
//wp_deregister_style( 'jquery-ui' );
wp_register_style( 'jquery-ui-pepper-grinder', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/pepper-grinder/jquery-ui.min.css' );
//wp_deregister_script('maskedinput');
wp_register_script('maskedinput', SSM_PLUGIN_URL . '/includes/js/jquery.maskedinput.min.js');
//wp_deregister_script('simpleschool');
wp_register_script('simpleschool', SSM_PLUGIN_URL . '/includes/js/simpleschool.js');
wp_enqueue_style('jquery-ui-pepper-grinder');
wp_enqueue_style('simpleschoolstles');
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'jquery-ui' );
wp_enqueue_script('simpleschool');
}
Мой тест:
jQuery(document).ready(function(){
//jQuery('.datepick').mask("99/99/9999");
//jQuery('.phone').mask("(999) 999-9999");
jQuery( '.datepick' ).datepicker( 'option', 'dateFormat', 'yyyy-mm-dd' ); // <-- this fails ????
alert('jQuery BETTER BE LOADED!!!'); // <---this worked
jQuery('<div>crazy wordpress and their php</div>').dialog(); // <--- this worked too
});
источник
ajax.googleapis.com
.Ответы:
Учитывая, что все библиотеки, необходимые для средства выбора даты, связаны с WordPress и зарегистрированы со всеми соответствующими зависимостями, все, что вам действительно нужно сделать, это:
Если вы посмотрите на источник страницы, то увидите, что все jQuery, jQuery-UI и jQuery-UI-Datepicker загружены.
Конечно, вам нужно будет загружать любые другие сценарии самостоятельно, как и вы, хотя вы должны зарегистрировать их с их зависимостями - третий параметр.
Например...
Таким образом, вы можете загрузить это с ...
... и знайте, что зависимости - jQuery - также будут загружены.
источник
wp_enqueue_scripts
- загрузит везде на переднем крае , не считая страницы входа. Но вы действительно хотите загружать сценарии только на тех страницах, которые нуждаются в них, чтобы вы могли изменить этот обратный вызов, чтобы он был более специфичным для конкретной страницы. Для внутреннего использования,admin_enqueue_scripts
но опять же, вы действительно хотите загружать их только там, где это необходимо. На серверной стороне есть несколько хуков, специфичных для каждой страницы. Я не могу сказать, что вам нужно, не зная, где вам нужны сценарии.В дополнение к отличному ответу @ s_ha_dum , вот пример, показывающий, как использовать встроенный инструмент выбора даты jQuery UI на странице вашего плагина.
Результат будет выглядеть так:
Скачать на GitHub .
Самые важные части:
datepicker({ dateFormat: "yy-mm-dd" })
, чтобы вы знали, чего ожидать в обработчике обратного вызова.Сначала я создал базовый класс, чтобы иметь что-то, что я мог бы использовать и в других ответах, и чтобы конкретный и простой код для скрипта выбора даты оставался конкретным и простым.
Базовый класс
Wpse_Plugin_Options_Page
Теперь мы должны переопределить только самые важные части. Хороший и короткий.
Специальный класс
Wpse_Datepicker_Example
Есть еще много возможностей для улучшений, но для начала это должно быть полезно.
источник
Есть несколько способов включить jQuery в тему. Я всегда использую WP-версию, которую я нахожу очень простой. Для правильной настройки нам нужно убедиться, что на странице WP будут следующие файлы, которые будут включены в загрузку страницы. Для загрузки скрипта и стиля сильфона добавьте код сильфона в файл functions.php темы.
Скрипт для фронтэнда
Скрипт для внутреннего использования
Мы можем написать функцию, которая будет подключена для определенных страниц, таких как single.php, страница или страница плагина. Я добавил или подключил «options-general.php» для отображения на Settigns-> Date Picker . Просто поместите этот код также в файл funtions.php или ниже.
После добавления этого кода вы получите средство выбора даты в Admin Menu-> Settigns-> Date Picker . Если вам нужна помощь для получения этой опции, задайте любой вопрос и добавьте комментарии по поводу добавления jQuery DatePicker в тему или плагин WordPress .
источник