ワードプレスにjquery-ui効果を正しく含める方法


25

私はワードプレスのテーマにjquery uiエフェクト(より具体的にはシェイクエフェクト)を含めようとしています。これまでのところ、jQueryスクリプトを含めることしかできませんでしたが、uiスクリプトを配置する場所とそれらをキューに入れる方法については、まったく手がかりがありません。

これは私が持っているコードです。それは明らかに機能しません:

    <?php wp_enqueue_script("jquery"); ?>
<?php wp_enqueue_script("jquery-ui-core"); ?>
<?php wp_head(); ?>
<link rel="stylesheet" type="text/css" href="<?php bloginfo('stylesheet_url'); ?>" />
<script type="text/javascript">
    var $j = jQuery.noConflict();
    $j(document).ready(function() {
        $j("#manita-imagen").mouseover(function(){
            //$j(this).animate({ opacity: "hide" })
            // alert('asd');
            $j(this).effect("shake", { times:3 }, 300);
        });
    });

 </script>

ご協力いただきありがとうございます!


5
1つの注意:jquery-ui-coreの依存関係として既にリストされているため、jqueryをエンキューする必要はありません。
ゴールデンアップル

回答:


36

WordPressにはjQuery UIライブラリが含まれていますが、UI / Effectsライブラリは含まれていません。そのライブラリは独立しており、スタンドアロンです。effects.core.jsファイルのコピーを含めて、個別にキューに入れる必要があります。

命名の一貫性のために、キューに入れるときはjquery-effects-coreと命名する必要があることに注意してください。

次のように含めることができます。

wp_enqueue_script("jquery-effects-core",'http://example.com/whatever/effects.core.js', array('jquery'), '1.8.8');

編集:この回答はWordPress 3.3より前に書かれました。これには、コアの一部としてさまざまなエフェクトライブラリが含まれています。使用する必要のあるエフェクトライブラリの断片を単純にキューに入れることができます。

これらのファイルのスラッグのリストはwp-includes / script-loader.phpにありますが、コアのスラッグはjquery-effects-coreです。

wp_enqueue_script("jquery-effects-core");

1
実際の効果(ブラインド、バウンス、フェードなど)の場合、その効果を明示的にキューに登録する必要があることに注意してください。「フェード」のように:wp_enqueue_script( 'jquery-effects-fade' );
SunnyRed

ユーザーは、独自のJavascriptを別のファイルに配置し、そのファイルをキューに入れて、必要な依存関係をリストする必要があります。このようにして、WordPress(およびパフォーマンスプラグイン)はこれらのスクリプトを読み込むために必要な順序を認識し、ページ上で正しい順序で配置します。
デイブヒルディッチ

8

@dabito、

スクリプトを正しく読み込んでいない... wp_enqueue_script()テーマテンプレートファイル内で呼び出さないでください(これはのように見えますheader.php)。この関数を別のフックから呼び出す必要があります。

テーマのfunctions.phpファイルに、次のコードを配置します。

function my_add_frontend_scripts() {
        wp_enqueue_script('jquery');
        wp_enqueue_script('jquery-ui-core');
}
add_action('wp_enqueue_scripts', 'my_add_frontend_scripts');

両方のスクリプトが適切に登録されていれば、適切に読み込まれます(<script />ヘッダーに適切なタグを追加します。その後、他のJavaScriptコードが機能するはずです。

スクリプトを管理側に追加する場合は、admin_enqueue_scripts代わりにアクションを追加します。


1
正しくない。彼がwp_head()呼び出しの前にそれらを呼び出している限り、それはうまくいくはずです。それらをフックする必要はありません。とにかくinitにフックするべきではありません。どこかにフックする場合は、「wp_enqueue_scripts」アクションフックにフックします。それはそこにあるものです。
オットー

1
@Ottoあなたが言ったことは論理的に聞こえます。しかし、コーデックスで@EAMannが書いたもの-「initアクションを使用してこの関数を呼び出す」と書いている理由を説明できますか?そして、彼の例はそこから取られています... codex.wordpress.org/Function_Reference/wp_enqueue_script
リーコーエン

コーデックスは場所に無計画です。これに使用する最適なアクションは、フロントエンドの「wp_enqueue_scripts」、またはバックエンドの「admin_enqueue_scripts」です。initへのフックは機能しますが、サイト全体でスクリプトを不必要にキューに入れます。
オットー

それに応じてコードスニペットを更新しました。もともとはCodexのリファレンスに基づいた迅速で直感的な反応でした...使用することwp_enqueue_scriptsは間違いなくより良い方法であり、余分なis_admin()チェックを必要としません。
EAMann

これも間違った方法です-パフォーマンスプラグインは依存関係を知る必要があります。作成者は独自の.jsファイルを作成し、それをキューに入れて依存関係に名前を付ける必要があります。残りはWordPressが処理します。
デイブヒルディッチ

7

また、jQuery UI全体をGoogleから直接エンキューすることもできます。これは私がそれを行う方法です:

wp_enqueue_script('jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js', array('jquery'), '1.8.6');

また、jQueryはjQuery UIの依存関係としてリストされているため、手動でキューに登録する必要はありません。WordPressが自動的に実行します。


3
自分のサイトではなく、Google CDNからすべてのjQueryライブラリをロードすることもできます。
ヤンファブリー

私は、外国のソースからスクリプトをロードすることを非常に落胆するでしょう。私はそれをかなり長い間行いましたが、(まれに)ホストがダウンしているため、複数の顧客が一度にページに問題を抱えていました。
ジュリアンF.ワイナート

1
@ JulianF.Weinertこれは両刃の剣であり、優れたcdnを使用すると待機時間は短くなりますが、失敗すると制御ができなくなります。ただし、GoogleのCDNがダウンすると、インターネットの半分が機能しなくなるため、インターネットは1つだけではなくなります。ただし、ユーザーのブラウザにキャッシュされずにダウンする可能性はわずかです。ほとんどの場合、cdnを使用すると利点があります。
アレックス

本当です。本格的なCDNについては話していませんでした。もちろん、まさにその使用法のために設計されているので、ここでは絶対に問題ありません。少し危険なしかし、私は考えてどのjohn-doe.com ISTからのロードスクリプト
ジュリアンF. Weinert

3

このjQueryライブラリのデフォルトのロードはないようです(全リストはこちら)ので、キューに登録する前にスクリプトを登録する必要があります。


1
私はあなたが正しいかもしれないと考えました(WPがスクリプトを登録する名前は使用される標準的な名前と異なる場合があります)が、この場合は「jquery-ui-core」の登録が機能するはずです。core.trac.wordpress.org/browser/branches/3.0/wp-includes/…に
goldenapples

いい視点ね!彼はそのjQueryライブラリーのみをロードしたいと思っていました。その場合、残りのロードは少し肥大化します。
編集者

3

ちょっとしたヒント。スクリプトをキューに登録すると、管理パネルを含むサイト全体のキューに登録されます。管理パネルにスクリプトが必要ない場合は、フロントエンドのサイトにのみスクリプトを含めることができます。

function my_add_frontend_scripts() {
    wp_enqueue_script('jquery');
    wp_enqueue_script('jquery-ui-core');
}

add_action( 'wp_enqueue_scripts', 'my_add_frontend_scripts');

4
エンキューにinitフックを使用しないでください。フロントエンドにのみwp_enqueue_scriptsフックを使用するか、バックエンドにadmin_enqueue_scriptsフックを使用します。
オットー

wp_enqueue_scriptsアクションがフロントエンド専用であることを知りませんでした。ありがとう:)
Tareq

0

ここでのすべての答えは、機能している間は技術的に間違っています。

jquery-uiや他のライブラリを含める正しい方法は、独自のスクリプトの依存関係として含めることです。

これは重要です。パフォーマンスツールがこれらの依存関係をチェックして、スクリプトの読み込み順序を変更し、サイトを最適化する可能性があるためです。

したがって、jqueryとjquery-uiを使用する場合は、独自の.jsスクリプトファイルを作成し、依存関係をリストしてこのようにキューに登録します。使用しているライブラリごとに個別のenqueueコマンドは不要です。

wp_enqueue_script('your-script-handle', 
 plugins_url('your-script-file.js', __FILE__), 
 array('jquery', 'jquery-effects-core', 'jquery-ui-core')
);

依存関係として追加する利用可能なすべてのスクリプトのリストは、https//developer.wordpress.org/reference/functions/wp_enqueue_script/にあります。


1
あなたはそれを正しく持っています。独自のwp_enqueue_script呼び出しで依存関係を使用することは、jquery / jquery-ui / etcを含める正しい方法です。それらを個別にキューに入れる必要はありません。
ミケーパヴロスマイケル

そして、スクリプトがそれらに依存しているときにそれらを別々にキューに入れると、スクリプトはパフォーマンスを最適化するサイトで壊れる/壊れる可能性があります。順序は変更できます)。スクリプトが他のスクリプトに依存していることをWordPressに伝えていない場合、それらがロードされる順序を保証できません。
デイブヒルディッチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.