wpColorPicker nu este o funcție!

25 aug. 2013, 13:08:08
Vizualizări: 24.1K
Voturi: 2

Am încercat să folosesc selectorul de culoare Iris în zona de administrare a plugin-ului meu, dar când l-am implementat primesc această eroare:

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-->

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

Are cineva idee de ce primesc această eroare? Unde greșesc?

5
Comentarii

încearcă cu admin_print_scripts în loc de admin_enqueue_scripts

passatgt passatgt
25 aug. 2013 14:05:02

Ai citit instrucțiunile

Chris_O Chris_O
25 aug. 2013 14:19:20

da, am citit acele instrucțiuni și le-am folosit dar aceeași eroare

rram rram
25 aug. 2013 14:28:58

@passatgt Mulțumesc, am încercat admin_print_scripts în loc de admin_enqueue_scripts, dar fără efect.

rram rram
25 aug. 2013 14:30:48

O altă soluție posibilă este legată de versiunea ta de PHP. Am actualizat de la PHP 5.4 la PHP 5.6 și problema a dispărut.

Shiro Shiro
30 iun. 2017 16:56:30
Toate răspunsurile la întrebare 6
1

Aceasta se întâmplă pentru că apelați funcția wpColorPicker înainte de încărcarea scriptului wp-color-picker, așa că pentru a rezolva această situație apelați funcția wpColorPicker() după încărcarea scriptului wp-color-picker adăugând următorul script în fișierul js, în acest exemplu l-am adăugat în wp-color-picker-script.js.

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

și apoi încărcați-l folosind acțiunea admin_enqueue_scripts după încărcarea scriptului wp-color-picker și adăugați wp-color-picker ca dependență pentru acesta, așa cum este arătat în următorul cod.

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 aug. 2013 20:35:37
Comentarii

Mulțumesc, dar încă am aceeași problemă. Vreau să înțeleg 3 lucruri pentru a putea îmbunătăți sau pentru a putea depana singur. Ce este $hook_suffix, handler în wp_enqueue_script și dependency?

rram rram
26 aug. 2013 22:46:14
0

Încearcă să modifici codul astfel.. sper că va funcționa

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

În template-ul tău

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

În fișierul tău 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 ian. 2015 10:04:42
0

Un alt motiv posibil pentru această problemă ar putea fi un filtru defectuos pe script_loader_tag, exact așa am întâmpinat și eu problema.

În acest caz, scriptul a fost încărcat corect prin enqueue, dar acest filtru a eliminat complet tag-ul de script, astfel încât acesta nu a fost încărcat deloc, ceea ce a dus la eroarea în consolă "wpColorPicker is not a function".

Doar în cazul în care cineva întâmpină aceeași problemă. ;-)

24 ian. 2019 20:03:15
0
// reparare 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'            => __( 'Șterge' ),
                'clearAriaLabel'   => __( 'Șterge culoarea' ),
                'defaultString'    => __( 'Implicit' ),
                'defaultAriaLabel' => __( 'Selectează culoarea implicită' ),
                'pick'             => __( 'Selectează Culoarea' ),
                'defaultLabel'     => __( 'Valoarea culorii' ),
            )
        );
    }
}
?>

Am acest cod în fișierul functions.php al unui temă child.

3 mar. 2021 23:14:12
0
-2

Apelarea directă a scriptului wp-color-picker fără a crea o funcție:

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

Această eroare apare deoarece aveți script_debug activat. Dezactivați-l.

define('SCRIPT_DEBUG', false);

Știu că nu este cea mai bună soluție, dar nu am reușit să găsesc o altă metodă. Se pare a fi un bug în nucleul WordPress.

8 ian. 2015 05:52:45