web-dev-qa-db-ja.com

WordpressプラグインでJavascriptをロードする方法

このJavaScriptファイルを私のwordpressプラグインに含める方法を誰かに教えてもらえますか。私はすべてのwp_enqeue_script()メソッドを試しましたが、何も起こりません。

わかりました、ここに私のプラグインコードの例を示します。

<?php
/*
Plugin Name: Ava Test
Plugin URI: http://#.com
Description: A plugin that is used for my javascript tests
Author: Ronny Kibet
Author URI: http://ronnykibet.com
version: 1.001
*/

include(popup.js); 
/*when I include it this way, it works fine, but gives an error when I activate the plugin
'plugin generated 453 characters ...'
*/

function popup() {
$src = plugins_url('popup.js', __FILE__);
wp_register_script( 'popup', $src );
wp_enqueue_script( 'popup' );
}
/*
when I included it this way, plugin is activated but nothing happens.
*/
?>

これはpopup.jsです

<script type="text/javascript">

function popup(){


alert('hello there this is a test popup')

}
</script>
<body onload="popup()">
</body>

wordpressプラグインで正しく動作するようにこのスクリプトを呼び出す方法を誰かが知っていますか?

18
Ronny Kibet

ロードが発生するタイミングを指定する必要があります。これを試してください。

<?php
/*
Plugin Name: Ava Test
Plugin URI: http://#.com
Description: A plugin that is used for my javascript tests
Author: Ronny Kibet
Author URI: http://ronnykibet.com
version: 1.001
*/

add_action('wp_enqueue_scripts','ava_test_init');

function ava_test_init() {
    wp_enqueue_script( 'ava-test-js', plugins_url( '/js/ava_test_.js', __FILE__ ));
}

また、あなたのJSにエラーがありますが、いくつかの回答で正しいバージョンを見ました、これが役立つことを願っています

更新:@brasofiloで言及されているように、スクリプトをロードするためにinitの代わりに使用する必要があるwp_enqueue_scriptsと呼ばれるフックがあります。

34
aghoshx

WP構造内で動作するように学習すると、イライラすることがあります。

そして、javascriptを導入することを学ぶことは、さらに苛立たしいことです。

だから、ここにいるみんなが何か価値あるものを寄付してくれましたが、それをすべて一緒にする必要があります。そう:

最初:
インクルード行を削除します。あなたはそれを必要としません。

第二:
コード内の$ src変数が実際に正しいパスであることを確認してください。私は追加します:

echo $src;

場所が正しいかどうかをテストします。

3番目:Aghoshxは正しい-フックリファレンスが必要です。

add_action('init','popup');

(あなたが関数ポップアップに名前を付けたので、それは私が入れたものです-しかし、他のWP関数とプラグインとの関数名の衝突を防ぐために、提案されたaghoshxのようなよりユニークなものに変更することをお勧めします)

4番目:スクリプトがロードされていることを確認します。上記の手順1〜3を実行した後、WPページを更新して「ソースの表示」を実行します。スクリプトファイルを探します。 Firefoxを使用している場合、実際にURLをクリックすると、URLが読み込まれます。IEを使用している場合は、URLをURLバーにコピーアンドペーストして、ファイルが実際にあるかどうかを確認します(ある場合は、読み込まれていない場合は、ファイルが正しく読み込まれておらず、設定しているパスを$ src変数に修正する必要があります)。

5番目:上記の釘付けになったら、cillosisは正しいです。javascriptファイルからjavascript関数(タグも削除する)をすべて削除する必要があります。

最後に、Martti Lainesの回答を見てください-彼の提案されたwindow.addEventListenerを使用してイベントをバインドする必要があります。OR ELSEは、phpスクリプトのタグを変更して、onload = "popup"を含めます(スクリプトのように)ファイル)。

提案の最後のビット:

jQueryを使用すると、多くのことがはるかに簡単になります。 jQueryをWPプラグインに組み込むのは非常に簡単です。これをphpポップアップ関数に追加するだけです:

enqueue_script('jquery');

幸運を!

2
cale_b