¡wpColorPicker no es una función!
Intenté usar el selector de color iris en el área de administración de mi plugin pero cuando lo implementé obtuve este error-
TypeError: $(...).wpColorPicker is not a functionCode-
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-->
<script type="text/javascript">
jQuery(document).ready(function($){
$('.ir').wpColorPicker();
});
</script>
¿Por qué estoy obteniendo este error, alguna pista? ¿Dónde estoy cometiendo el error?

Esto ocurre porque estás llamando a la función wpColorPicker antes de cargar el script wp-color-picker. Para solucionar esta situación, llama a la función wpColorPicker() después de cargar el script wp-color-picker añadiendo el siguiente código en un archivo JavaScript. En este ejemplo lo he añadido en wp-color-picker-script.js.
jQuery(document).ready(function($){
$('.ir').wpColorPicker();
});
Luego encolalo usando la acción admin_enqueue_scripts después de encolar el script wp-color-picker y añade wp-color-picker como dependencia, como se muestra en el siguiente código.
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 );
}

Prueba cambiando tu código así... espero que funcione
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' );
En tu plantilla
<div class="color-picker" style="position: relative;">
<input type="text" value="#bada55" class="ir" id="color" />
<div style="position: absolute;" id="colorpicker"></div>
</div>
En tu archivo 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();
});
});
});

Otra posible razón para esto es un filtro malicioso en script_loader_tag
, esto fue lo que me estaba pasando a mí.
En este caso, el script estaba correctamente encolado, pero este filtro estaba eliminando completamente la etiqueta del script, por lo que no se cargaba en absoluto, generando así el error en la consola "wpColorPicker is not a function".
Por si alguien tiene el mismo problema. ;-)

// agregar reparación para 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' => __( 'Limpiar' ),
'clearAriaLabel' => __( 'Limpiar color' ),
'defaultString' => __( 'Predeterminado' ),
'defaultAriaLabel' => __( 'Seleccionar color predeterminado' ),
'pick' => __( 'Seleccionar Color' ),
'defaultLabel' => __( 'Valor de color' ),
)
);
}
}
?>
Tengo esto en mi functions.php de un tema hijo.
