Intereting Posts
Вставьте пользовательский идентификатор в wp_get_attachment_link Пусть и комментарий для комментариев администратора и автора сообщения мета Установка Solr для выделенного поиска Что является лучшей альтернативой этому коду? Как сделать в столбце сортировки adminboard панели администратора для настраиваемого поля, которое подсчитывает количество показов страниц? форма пользовательских комментариев для пользовательских типов сообщений как получить значение времени, оставшегося для переходного процесса Больше не добавлять элементы меню, связанные с сервером Удалить страницу магазина Woocomerce Как вы отформатируете дату как двухзначный год? (например, «10.12.10» вместо «10.12.2010») Добавление мета-окна в плагин thrid-party как остановить WordPress меню администратора от прокрутки страницы Изображения внутри заголовка сообщения Shortcode в тот же короткий код Как исправить пустые ссылки на страницы?

Кажется, не получается работать JQuery (плагин wordpress)

Я пытаюсь научиться создавать плагины с помощью WordPress, но я наткнулся на эту проблему:

Всякий раз, когда я пытаюсь запустить JQuery, я получаю неопределенные ошибки и такие …

Я пробовал разные вещи, которые я нашел в Интернете, например, deregister / register / enqueue, но ничего не работает.

Цель состоит в том, чтобы заполнить текстовое поле на странице настроек плагина без перезагрузки / сохранения страницы, чтобы создать предварительный просмотр в реальном времени.

Это то, что я делаю прямо сейчас:

class plugin { public function __construct() { add_action("wp_enqueue_scripts", "jquery_enqueue"); add_action( 'admin_menu', array( $this, 'plugin_page' ) ); add_action( 'admin_init', array( $this, 'page_init' ) ); } public function jquery_enqueue() { wp_deregister_script('jquery'); wp_register_script('jquery', "http" . ($_SERVER['SERVER_PORT'] == 443 ? "s" : "") . "://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js", false, null); wp_enqueue_script('jquery'); } public function plugin_page() { add_menu_page( '...', '...', '...', '...', array( $this, 'create_admin_page' ) ); } public function create_admin_page() { // Set class property $this->options = get_option( 'my_option_name' ); ?> <div class="wrap"> <h2>Test</h2> <form method="post" action="options.php"> <?php // This prints out all hidden setting fields settings_fields( '...' ); do_settings_sections( '...' ); ?> <script> $( document ).ready(function() { $( "#my_option_name" ).change(function() { $.post( 'classes/dummy.class.php' ).success(function(x){ json = $.parseJSON(x); $('textarea').text(json); }); }); }); </script> </form> <textarea></textarea> </div> <?php }} 

Я оставил некоторый код и включил только важные части.

Solutions Collecting From Web of "Кажется, не получается работать JQuery (плагин wordpress)"

Это общий вопрос. Меня мучило, когда я впервые начал, потому что это не имеет никакого смысла, и его трудно найти, пока не узнаете . Проблема в том, что WordPress связывает версию jQuery, которая настроена на режим noConflict. Поэтому для запуска скриптов вы должны использовать оболочки noConflict

 jQuery(document).ready(function($) { // Inside of this function, $() will work as an alias for jQuery() // and other libraries also using $ will not be accessible under this shortcut }); 

Обновить

  1. Нет необходимости загружать другую версию jQuery. Это просто усложняет ситуацию. Пусть, WordPress загружает свою собственную версию. Удалите ваш jquery_enqueue() .

  2. Затем настройте файл create_admin_page() чтобы не печатать сценарий напрямую. Я думаю, что происходит, что add_menu_page() работает до wp_enqueue_scripts и поэтому jQuery пока недоступен. Следовательно, ошибка. Вместо того, чтобы печатать сценарии, вы можете распечатать их в нижнем колонтитуле, добавив новую функцию в admin_print_footer_scripts .

Таким образом, ваш create_admin_page() теперь будет выглядеть так:

 public function create_admin_page() { // Set class property $this->options = get_option( 'my_option_name' ); add_action( 'admin_print_footer_scripts', array( $this, 'footer_scripts' ) ); ?> <div class="wrap"> <h2>Test</h2> <form method="post" action="options.php"> <?php // This prints out all hidden setting fields settings_fields( '...' ); do_settings_sections( '...' ); ?> </form> <textarea></textarea> </div> <?php } 

С вашей новой функцией:

 public function footer_scripts() { ?> <script> jQuery( document ).ready(function($) { $( "#my_option_name" ).change(function() { $.post( 'classes/dummy.class.php' ).success(function(x){ json = $.parseJSON(x); $('textarea').text(json); }); }); }); </script>