wpColorPicker не является функцией!

25 авг. 2013 г., 13:08:08
Просмотры: 24.1K
Голосов: 2

Я пытаюсь использовать iris color picker в административной области моего плагина, но при реализации получаю следующую ошибку-

TypeError: $(...).wpColorPicker is not a function Код-

function sam()
{
wp_enqueue_style( 'wp-color-picker');
wp_enqueue_script( 'wp-color-picker');
}
add_action( 'admin_enqueue_scripts', 'sam' );


<!--HTML-->

<input type="text" value="#bada55" class="ir" />

<!--СКРИПТ-->

 <script type="text/javascript">
        jQuery(document).ready(function($){
    $('.ir').wpColorPicker();
});
        </script>

Почему я получаю эту ошибку? Где я делаю ошибку?

5
Комментарии

попробуйте использовать admin_print_scripts вместо admin_enqueue_scripts

passatgt passatgt
25 авг. 2013 г. 14:05:02

Вы читали инструкции

Chris_O Chris_O
25 авг. 2013 г. 14:19:20

да, я читал эти инструкции и использовал их, но та же ошибка

rram rram
25 авг. 2013 г. 14:28:58

@passatgt Спасибо, я попробовал admin_print_scripts вместо admin_enqueue_scripts, но безрезультатно.

rram rram
25 авг. 2013 г. 14:30:48

Еще одно возможное решение - проблема может быть в версии PHP. После обновления с PHP 5.4 до PHP 5.6 проблема исчезла.

Shiro Shiro
30 июн. 2017 г. 16:56:30
Все ответы на вопрос 6
1

Это происходит потому, что вы вызываете функцию wpColorPicker до загрузки скрипта wp-color-picker. Чтобы решить эту проблему, вызывайте функцию wpColorPicker() после загрузки скрипта wp-color-picker, добавив следующий скрипт в JS-файл (в данном примере я добавил его в wp-color-picker-script.js).

jQuery(document).ready(function($){
    $('.ir').wpColorPicker();
});

После этого подключите его с помощью действия admin_enqueue_scripts после подключения скрипта wp-color-picker и укажите wp-color-picker в качестве зависимости, как показано в следующем коде.

add_action( 'admin_enqueue_scripts', 'wp_enqueue_color_picker' );
function wp_enqueue_color_picker( $hook_suffix ) {
    wp_enqueue_style( 'wp-color-picker' );
    wp_enqueue_script( 'wp-color-picker');
    wp_enqueue_script( 'wp-color-picker-script-handle', plugins_url('wp-color-picker-script.js', __FILE__ ), array( 'wp-color-picker' ), false, true );
}
25 авг. 2013 г. 20:35:37
Комментарии

Спасибо. Но я все еще сталкиваюсь с той же проблемой. Я просто хочу понять 3 вещи, чтобы улучшить ситуацию или отладить самостоятельно. Что такое $hook_suffix, handler в wp_enqueue_script и dependency?

rram rram
26 авг. 2013 г. 22:46:14
0

Попробуйте изменить ваш код следующим образом... надеюсь, это сработает

function sam()
{

wp_enqueue_script('wp-color-picker', plugins_url('wp-color-picker-script.js', __FILE__ ), array( 'farbtastic' ), false, true );

}
add_action( 'admin_enqueue_scripts', 'sam' );

В вашем шаблоне

<div class="color-picker" style="position: relative;">
<input type="text" value="#bada55" class="ir" id="color" />
  <div style="position: absolute;" id="colorpicker"></div>
</div>

В вашем JS-файле (wp-color-picker-script.js)

jQuery(document).ready(function($) {
$('#colorpicker').hide();

$('#colorpicker').farbtastic('#color');
if ( $("#color").val().length === 0 )
    {
    var input = $( "#color" );
     input.val( input.val() + "#ffffff" );
    }
$('#color').click(function() {
    $('#colorpicker').fadeIn();
});

$(document).mousedown(function() {
    $('#colorpicker').each(function() {
        var display = $(this).css('display');
        if ( display == 'block' )
            $(this).fadeOut();
    });
});
});
8 янв. 2015 г. 10:04:42
0

Ещё одной возможной причиной может быть некорректный фильтр для script_loader_tag, именно это случилось в моём случае.

В этой ситуации скрипт был правильно добавлен в очередь, но данный фильтр полностью удалял тег скрипта, поэтому он вообще не загружался, что приводило к ошибке в консоли "wpColorPicker is not a function".

На всякий случай, если у кого-то возникнет такая же проблема. ;-)

24 янв. 2019 г. 20:03:15
0
// добавление локализации для wpColorPickerL10n
<?php
    if( is_admin() ){
    add_action( 'wp_default_scripts', 'wp_default_custom_scripts' );
    function wp_default_custom_scripts( $scripts ){
        $scripts->add( 'wp-color-picker', "/wp-admin/js/color-picker.min.js", array( 'iris' ), false, 1 );
        did_action( 'init' ) && $scripts->localize(
            'wp-color-picker',
            'wpColorPickerL10n',
            array(
                'clear'            => __( 'Очистить' ),
                'clearAriaLabel'   => __( 'Очистить цвет' ),
                'defaultString'    => __( 'По умолчанию' ),
                'defaultAriaLabel' => __( 'Выбрать цвет по умолчанию' ),
                'pick'             => __( 'Выбрать цвет' ),
                'defaultLabel'     => __( 'Значение цвета' ),
            )
        );
    }
}
?>

Этот код находится в моем файле functions.php дочерней темы.

3 мар. 2021 г. 23:14:12
0
-2

Просто подключите скрипт wp-color-picker без создания функции:

wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_script( 'my-script-handle', plugins_url('js/my-script.js', __FILE__ ), array( 'wp-color-picker' ), false, true );
28 янв. 2015 г. 22:17:13
0
-4

Эта ошибка появляется потому, что у вас включен параметр script_debug. Отключите его.

define('SCRIPT_DEBUG', false);

Я знаю, что это не самое лучшее решение, но я не смог найти другой способ обойти эту проблему. Похоже на баг в ядре WordPress.

8 янв. 2015 г. 05:52:45