¡wpColorPicker no es una función!

25 ago 2013, 13:08:08
Vistas: 24.1K
Votos: 2

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?

5
Comentarios

prueba con admin_print_scripts en lugar de admin_enqueue_scripts

passatgt passatgt
25 ago 2013 14:05:02

¿Leíste las instrucciones?

Chris_O Chris_O
25 ago 2013 14:19:20

sí, leí esas instrucciones y las usé pero el mismo error

rram rram
25 ago 2013 14:28:58

@passatgt Gracias, probé admin_print_scripts en lugar de admin_enqueue_scripts pero sin efecto.

rram rram
25 ago 2013 14:30:48

Otra posible solución es debido a tu versión de PHP, actualicé de PHP 5.4 a PHP 5.6 y el problema desapareció.

Shiro Shiro
30 jun 2017 16:56:30
Todas las respuestas a la pregunta 6
1

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 );
}
25 ago 2013 20:35:37
Comentarios

Gracias, pero sigo enfrentando el mismo problema. Solo quiero saber 3 cosas para poder mejorar o depurar yo mismo. ¿Qué es $hook_suffix, handler en wp_enqueue_script y dependency?

rram rram
26 ago 2013 22:46:14
0

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();
    });
});
});
8 ene 2015 10:04:42
0

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. ;-)

24 ene 2019 20:03:15
0
// 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.

3 mar 2021 23:14:12
0
-2

Solo llama el script wp-color-picker sin crear una función:

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 ene 2015 22:17:13
0
-4

Este error aparece porque tienes script_debug activado. Desactívalo.

define('SCRIPT_DEBUG', false);

Sé que no es la mejor solución, pero no he podido encontrar otra alternativa. Parece ser un error en el núcleo de WordPress.

8 ene 2015 05:52:45