web-dev-qa-db-ja.com

WordPressで最新のjQueryを使用する(管理インターフェース)

私は自分の管理インターフェースで最新のjQuery(およびjQuery UI)バージョンを使用したい(私が作成した特定の投稿タイプを編集する)。

私はこれを試しました:

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

それはうまくいきましたが、他のWP管理ページではjQueryのオーバーライドが原因でjQueryエラーが発生しました(2回読み込まれるため)。

JQueryを「登録解除」して(最新のものを使用して)再度登録すると、うまくいきません。

それが私がこの問題に遭遇したのは初めてではありません...私が必要とするのはDatepickerとColorpickerのようないくつかの機能を使うために私のWordPress管理インターフェース上のjQueryの最新版を使うことだけです。 register_script

「jquery」という名前で登録した場合、WordPressによってすでにこの行にロードされている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>

私はWordPressコアを変更したくないので、この load-scripts.php ファイルにハッキングしてファイル名を変更することはできません。

2
Thiago Belem

バージョン3.6以降のWordPress - - adminでは、 "クリティカル"スクリプトの登録解除を一切お勧めできません。

スコープ設定されたスコープ(adminの特定の部分に新しいjQueryを読み込む)では、通常jQueryのカスタムコピーを読み込み、すぐにnoConflict()を使って独自の変数に分離してカスタムJSコードで使用する方が合理的です。


昔のandswer

WPはデフォルトで管理領域内のスクリプトを連結するため、登録解除は機能しません。そのため、他の場所からjQueryをロードするとバラバラになります。

連結を無効にして機能させることができます(必要に応じて条件付きを追加します)。

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グーグルから最新バージョンをロードすることに対するトリックを本当にありがとう、私はそれを知らなかった:)

13
Rarst

あなたがそれをあなたのカスタム投稿タイプのページのために動かしていてそれがあなたが望むすべてであるならば、あなたはただページのために条件付きタグチェックを入れることができました:

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

おそらくより良い解決策はこのプラグインを見てみることでしょう: http://wordpress.org/extend/plugins/use-google-libraries/ /それはデフォルトのWordPress AJAXライブラリを上書きしますGoogleのCDNにあるものと一緒に。

これに関するいくつかの良いことは、とても多くのサイトがGoogleのライブラリを使用しているので、それらはすでにキャッシュされているでしょう、あなたは手動であなたのライブラリを更新する必要はありません。

1
Evan