it-swarm-eu.dev

Použít nejnovější jQuery ve WordPressu (administrátorské rozhraní)

Chci používat nejnovější verze jQuery (a jQuery UI) na mém rozhraní administrátora (editaci konkrétního typu příspěvku, který jsem vytvořil).

Zkusil jsem to:

// jQuery 1.x
wp_register_script('jquery1x', 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', false, null, true);

// jQuery UI 1.8.4 PTBR
wp_register_script('jquery-ui-custom-pt_BR', THEME_URL . 'js/jquery.ui.datepicker-pt-BR.js', array('jquery1x'), null, true);
// jQuery UI 1.8.4  
wp_register_script('jquery-ui-custom', THEME_URL . 'js/jquery-ui-1.8.4.custom.min.js', array('jquery1x', 'jquery-ui-custom-pt_BR'), null, true);

// jQuery UI 1.8.4 CSS 
wp_register_style('jquery-ui-custom-css', THEME_URL . 'css/smoothness/jquery-ui-1.8.4.custom.css');

wp_enqueue_style('jquery-ui-custom-css');
wp_enqueue_script('jquery-ui-custom');

A fungovalo to, ale na jiných WP admin stránkách jsem dostal nějaké jQuery chyby, protože přepsání jQuery (protože je načten dvakrát).

Pokud jsem "deregister" jQuery a zaregistrovat ji znovu (pomocí nejnovější) nebude fungovat.

To není poprvé, co jsem narazil na tento problém ... Vše, co potřebuji, je použít nejnovější verzi jQuery na mém WordPress admin rozhraní pro použití některých funkcí, jako je Datepicker a Colorpicker .. Ale až teď to nemůžu udělat pomocí register_script.

Pokud se zaregistruji s názvem "jQuery", nebude aktualizován, protože na tomto řádku je již načten soubor jQuery:

<script type='text/javascript' src='http://website.com/wp-admin/load-scripts.php?c=1&amp;load=jquery,utils,nav-menu&amp;ver=2b05c108d9016a4caa470b8edaf40953'></script>

A nemohu proniknout do tohoto souboru load-scripts.php a změnit název souboru, protože nechci měnit jádro WordPressu.

2
Thiago Belem

Počínaje verzí 3.6 WordPress aktivně odradí od deregisterování "kritických" skriptů v admin vůbec.

Pro daný rozsah (načítání novějšího jQuery ve specifické části admin) by bylo více smysluplné načíst vlastní kopii jQuery normálně a použít noConflict() na ní hned, aby se izolovala ve vlastní proměnné, která se má použít ve vlastním JS kódu.


Starý andswer

deregister pro vás nefunguje, protože WP standardně propojuje skripty v oblasti admin. Takže když jQuery načtete z jiného místa, rozpadne se.

Chcete-li ji zprovoznit, můžete zakázat zřetězení (podle potřeby přidejte podmínky):

add_action( 'admin_init', 'jquery_admin' );

function jquery_admin() {

    global $concatenate_scripts;

    $concatenate_scripts = false;
    wp_deregister_script( 'jquery' );
    wp_register_script( 'jquery', ( 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' ), false, '1.x', true );
}

PS mnohokrát děkuji za trik s načítáním nejnovější verze od Googlu, nebyl jsem si toho vědom :)

13
Rarst

Pokud jej používáte pro své vlastní stránky typu příspěvku a to je vše, co chcete, můžete na stránku umístit kontrolu podmíněné značky:

if (is_admin() && $_GET['post_type'] == 'custom_post_type') {
  // jQuery replacement
}

Možná lepší řešení by bylo podívat se na tento plugin: http://wordpress.org/extend/plugins/use-google-libraries/ přepíše výchozí WordPress AJAX knihovny s těmi v Google CDN.

Několik hezkých věcí o tom, protože mnoho stránek používá knihovny z Google, budou již v mezipaměti, nemusíte ručně aktualizovat knihovny.

1
Evan