web-dev-qa-db-ja.com

NoConflictラッパーのプラグインからadminのライブラリークリプトを読む方法は?

私のプラグインのために私は私のCPT(xyz)のいくつかのカスタムフィールドのためにメタボックスを作り、そしてフィールドを整理するために私はタブを実装する必要があります。そして私はwp_enqueue_script()を使ってjQuery/JavaScriptをロードするように教えました、それで私のプラグインから、( Chip Bennettの提案 を念頭に置いて)私はwp_register_script()を除外しwp_enqueue_script()だけを使いました組み込みスクリプトの登録解除を回避しました。

function my_scripts() {    

    wp_enqueue_script( 'jquery-lib-scripts', plugins_url( '/js/jquery-1.10.2.min.js', __FILE__ ) );
    wp_enqueue_script( 'jquery-ui-for-tabs', plugins_url( '/js/jquery-ui.js', __FILE__ ) );
    //wp_enqueue_script( 'plugin-scripts', plugins_url( '/js/plugin-scripts.js', __FILE__ ) );

    wp_enqueue_style( 'plugin-style', plugins_url( 'plugin-style.css', __FILE__ ) );

}

add_action('admin_enqueue_scripts', 'my_scripts');

そのため、ファイルは管理パネルにグローバルにロードされています。

組み込みのWP管理スクリプトjqueryjquery-ui-core、およびjquery-ui-tabsについては十分に認識していますが、すべて問題ありません。しかし、どういうわけか私のスクリプトは矛盾していません、そして私のCPTのpost-new.php(Add new)ページの私のタブで働いています。しかし、post.php(CPTの編集画面xyz)のタブが壊れています。

私は私の開発に取り組んでいます。 WAMPを使用し、WP 3.9.1を使用している環境localhost。他のすべてのプラグインを無効にしてデフォルトのT14テーマに切り替えてみました。

私のコードではタブはすべてのページで機能していることがわかりましたが、Akismetであっても他のプラグインをアクティブにすると、衝突になります。 noConflictラッパー について学びましたが、これらはカスタムスクリプト専用であると仮定しましたが、どのようにしてnoConflictラッパーにプラグインのライブラリスクリプトをエンキューできますか。 ?

1
Mayeenul Islam

私は実際には質問に答えていません。私はここに載せています。

まず最初に、 WPSE回答 からエンキュー問題の初期解を得ました。それは魅力のように働いています。しかし、wp_enqueue_media()を使用してMedia Uploadedをフィールドに埋め込もうとしたときに競合する問題が再発生しました。そのページでもFeatured Image jqueryアップローダが機能していました。

私は自分のプラグインをすべて無効にすることを試み、define('SCRIPT_DEBUG', true)を使ってTwentyFourteenに戻った。そして@ G.Mの提案で。私は彼が提供した以下のコードを試してみました:

function header_sent() { headers_sent() && die('Sent!'); }
add_action( 'init', 'header_sent' );

ヘッダーが既に送信されているかどうかを確認するために、私は緑色の信号を得ました。それから、何度か試して、@ Rupのコメントで、最新のjQueryのもの(jQ 1.11.1とjQUI 1.10.4)をすべてキューに入れました。しかしそれでも問題はあります。しかし、これらの幅広い努力により、少なくとも私のプラグインがAkismetと競合しないことを望みました。

私はwp_enqueue_media()this SO answer で刷新しました。しかし、私のプラグインのjQueryは動作していますが、私はWordPressのSEOを起動したとき、WP SEO。だからそれはWordPressのSEOとの明らかな衝突です。

それからメタボックスの優先順位を'high'から'low' $ mdashに変更しました。何も起こらなかった。彼らの何かが私の心をクリックしました、そして私は私のスクリプトin_footerを次のように惑わしました:

wp_enqueue_script( 'jquery-lib-scripts', plugins_url( '/js/jquery-1.11.1.min.js', __FILE__ ), '', '', true );
wp_enqueue_script( 'jquery-ui-for-tabs', plugins_url( '/js/jquery-ui-1.10.4.min.js', __FILE__ ), '', '', true );

これで問題は解決しました。
(しかし、スクリプトが将来他のプラグインと競合するかどうかは実際にはわかりません。その場合はどうすればよいでしょう:()

0
Mayeenul Islam