Как разрешить конфликт JavaScript в Картах Google с помощью админки Javascript для Wordpress - PullRequest
1 голос
/ 11 февраля 2011

У меня есть этот интернет-магазин, который в настоящее время развернут, и он основан на Wordpress.Я добавил функциональность, в которой, если администратор введет адрес, карта будет показана.Пока все хорошо, дела идут отлично.

Однако я заметил, что всякий раз, когда я добавляю это:

wp_enqueue_script('googlemap', 'http://maps.google.com/maps/api/js?sensor=false', array(), false, true);

, что, очевидно, является Google Map js, функция перетаскиванияWordpress Admin (наиболее очевидно область виджетов) не работает.Я попытался прокомментировать эту строку, и вуаля, перетаскивание виджетов возвращается, но, конечно, нет Google Maps.

Вы тоже с этим сталкивались?Как ты это сделал?В настоящее время я управляю своей страницей администратора через не-JavaScript версию Widgets.Работоспособный, но не идеальный.

Ответы [ 3 ]

3 голосов
/ 15 февраля 2011

Это может помочь вам, так как это просто исправило мою проблему.

Я загружаю карты Google так же, как и вы, но в моем собственном js-файле:

if($('#gmap').length != 0){
    initialize();
}

Таким образом, он не загружается на страницы без элемента #gmap

0 голосов
/ 22 января 2012

Вы можете с предельной точностью управлять страницей админ-панели, где должен быть загружен скрипт. Первое, что вы должны учитывать, это то, что: если элемент DOM не найден, API карт генерирует ошибку "a is undefined". Таким образом, вы должны загрузить API на правой странице панели администратора.

Я использую следующий скрипт для загрузки API GMaps в окне редактирования определенного пользовательского типа записи:

add_action('admin_enqueue_scripts', 'my_admin_enqueue_scripts' );
function my_admin_enqueue_scripts( $hook ) {
  if( ('my_custom_post_type' != get_post_type()) || ('edit.php' == $hook) )
    return;
  // enqueue GMaps API
  wp_enqueue_script('google-maps-api', 'http://maps.googleapis.com/maps/api/js?sensor=false' );
}
  1. Хук действия admin_enqueue_scripts срабатывает только тогда, когда WP загружает сценарии панели администратора.
  2. Аргумент $ hook идентифицирует текущий файл.
  3. my_custom_post_type - это ... пользовательский тип записи, для которого требуется карта Google. Конечно, это может быть также «пост» или «страница». Таким образом, приведенный выше код не позволяет загружать API на страницах и публиковать админ-панели.
  4. $ hook идентифицирует файл edit.php, то есть файл, который генерирует список сообщений (или страниц, или пользовательских типов сообщений). Таким образом, если текущая страница представляет собой список, а не панель «Новое сообщение» или «Редактировать сообщение», сценарий прерывается.
  5. Последний шанс - это панель 'new' или 'edit' типа сообщения, который вы указали выше. Только там API карт будет загружен
  6. Не забудьте пользовательский мета-блок, который будет содержать элемент DOM карты
0 голосов
/ 11 февраля 2011

Попробуйте:

if (!is_admin()) {
wp_enqueue_script('googlemap', 'http://maps.google.com/maps/api/js?sensor=false', array(), false, true);
}

Изменить: Пожалуйста, прокомментируйте, если это используется в панели администратора, и я найду обходной путь; приведенный выше код ставит в очередь только сценарий googlemap во внешнем интерфейсе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...