wpColorPicker не является функцией!
Я пытаюсь использовать 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>
Почему я получаю эту ошибку? Где я делаю ошибку?

Это происходит потому, что вы вызываете функцию 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 );
}

Попробуйте изменить ваш код следующим образом... надеюсь, это сработает
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();
});
});
});

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

// добавление локализации для 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 дочерней темы.
