サポート » プラグイン » 自作プラグインにjqueryを簡単に読み込む方法

  • 解決済 kiraiday

    (@kiraiday)


    現在自作プラグインを作成しておりまして、ドラック&ドロップが出来るjqueryプラグインを以下の方法で読み込ませたいと考えております。

    <? php
    add_action(‘wp_head’, ‘jquery_DnR_load_header’);

    function jquery_DnR_load_header() {
    $plugin_path = plugins_url(‘/’, __FILE__);
    $jq_modal = $plugin_path . ‘jqModal.js’;
    $jq_dnr = $plugin_path . ‘jqDnR.js’;
    $dimensions = $plugin_path . ‘dimensions.js’;
    wp_deregister_script(‘jquery’);
    wp_enqueue_script(‘jqdnr’, $jq_dnr, ‘jquery’, false);
    wp_enqueue_script(‘dimensions’, $dimensions, ‘jquery’, false);
    wp_enqueue_script(‘jqmodal’, $jq_modal, ‘jquery’, false);
    }
    ?>

    以前は直接ヘッダーに書き込む方法でしたが、wp_enqueue_scriptを利用すれば簡単に重複なく利用できるとのことで作ってみました。

    ですが、上記の書き方では以下のようなエラーが発生します。
    Parse error: syntax error, unexpected T_STRING in

    どのように書けば良いのか分かりません。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • これは、単に書き間違いですか?

    <? php
    トピック投稿者 kiraiday

    (@kiraiday)

    申し訳ございません。

    <?【スペース】phpと書いていたせいでParse error: syntax error, unexpected T_STRING inのエラーが出ておりました。

    初歩的な部分でこけていたもので大変申し訳ございません。
    ただ、ヘッダー部分にファイルを読み込む設定にしたつもりですが、上記の3つのscriptファイルが読み込まれないのは書き方が間違えているからでしょうか?

    wp_deregister_script('jquery');
    で jQuery を登録抹消していると jQuery 依存の
    ‘jqdnr’,’dimensions’,’jqmodal’
    が読み込まれない気がします。

    のと、

    wp_enqueue_script('jqdnr', $jq_dnr, 'jquery', false);
    の ‘jquery’ は配列にしてあげないと
    空配列にされますので(wp-includes/class.wp-dependencies.php 233〜234行目)
    array( ‘jquery’ ) とすると吉です。

    URIを求める際、
    $jq_modal = $plugin_path . 'jqModal.js';
    とされてますが、
    $jq_modal = $plugin_path . '/jqModal.js';
    のように、セパレータが必要なのではないでしょうか?

    トピック投稿者 kiraiday

    (@kiraiday)

    kz様
    ron_shaya様

    ご返答誠に感謝いたします。
    >wp_deregister_script(‘jquery’);
    jqueryの登録を抹消する意味だったのですね。
    jqueryの重複回避のためにwp_deregister_scriptを利用したつもりでしたが・・・

    >$jq_modal = $plugin_path . ‘/jqModal.js’;
    実は、スクリプトのエラーはなくなったもののヘッダー部分に出力されない状況なのでパスの間違いかどうかも確認できない状況でございます。

    wp_enqueue_script(‘jquery’)
    としても出力されませんでした。

    通常 add_actionを利用したもので出力されるものだと思っておりましたがどのようにすれば出力されるのでしょうか?

    質問ばかりで申し訳ございません。

    フックを「wp_head」以前に実行されるものに変更した方がいいのではないでしょうか?

    トピック投稿者 kiraiday

    (@kiraiday)

    ron_shaya様

    アクションフックを確認してきました。

    wp_footer

    wp_head

    wp_meta

    wp_print_scripts

    これから見ると、プラグイン内に書き込むアクションフックはやはりwp_headかなと思うのですが・・・

    それとも
    wp_deregister_script(‘jquery’);←は現在wp_enqueue_script(‘script’)に変更
    wp_enqueue_script(‘jqdnr’, $jq_dnr, array( ‘jquery’ ), false);
    wp_enqueue_script(‘dimensions’, $dimensions, array( ‘jquery’ ), false);
    wp_enqueue_script(‘jqmodal’, $jq_modal, array( ‘jquery’ ), false);
    上記の部分が問題になってるのでしょうか?

    リファレンスを見ると、wp_head の実行はテンプレートが「wp_head()」をコールしたとき、と記述されています。即ちHTMLのhead部を出力している途中であり、実際にフック関数内でプログラムを停止させると、テンプレートの「head.php」が実行されている事がわかります。

    それ故、「wp_enqueue_script()」で登録されたscriptタグの出力を有効にするには、wp_headフック以前のものにした方がいいのではないでしょうか?

    トピック投稿者 kiraiday

    (@kiraiday)

    ron_shaya様

    ご指摘感謝いたします。
    wp_head以外のアクションフックを念のため試したところ
    どの部分でも同じく出力されませんでした。

    ただ、それを考えてスクリプトを記述している位置をスクリプトが始まるトップに書き換えたところ出力されました。

    <head>
    <script type=”text/javascript” src=”http://○○○/wp-content/plugins/○○/jqDnR.js?ver=3.0.1″/&gt;
    <script type=”text/javascript” src=”http://○○○/wp-content/plugins/○○/dimensions.js?ver=3.0.1″/&gt;
    <script type=”text/javascript” src=”http://○○○/wp-content/plugins/○○/jqModal.js?ver=3.0.1″/&gt;
    <title></title>
    </head>

    Verは指定してないので・・・WordPressのバージョンでしょうか?(笑)

    出力指定したスクリプトは以下の通り
    function jquery_DnR_load_header() {
    $plugin_path = plugins_url(‘/’, __FILE__);
    $jq_modal = $plugin_path . ‘jqModal.js’;
    $jq_dnr = $plugin_path . ‘jqDnR.js’;
    $dimensions = $plugin_path . ‘dimensions.js’;
    wp_enqueue_script(‘jquery’);
    wp_enqueue_script(‘jqdnr’, $jq_dnr, array( ‘jquery’ ), false);
    wp_enqueue_script(‘dimensions’, $dimensions, array( ‘jquery’ ), false);
    wp_enqueue_script(‘jqmodal’, $jq_modal, array( ‘jquery’ ), false);
    }

    add_action(‘wp_print_scripts’, ‘jquery_DnR_load_header’);
    上記は<?php ?>がないのは記述しているプラグイン<?php ?>の中に一緒にまとめた関係で削除いたしました。

    ron_shaya様
    最後までお付き合いいただき誠に感謝いたします。

    kz様
    書き方のご指摘感謝いたします。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「自作プラグインにjqueryを簡単に読み込む方法」には新たに返信することはできません。