web-dev-qa-db-ja.com

Javascriptがエンキューされた後に変更するにはどうすればよいですか?

私の最初のプラグインを書いて、できるだけ単純にしようとしました。私はそれが私にそれがそこにあったことを知らせるためにジャバスクリプトに単純化した機能をちょうど入れた。その後、JavaScriptのメソッドを変更しました。 WPは、JavaScriptが変更されたことを認識しません。それはこのように見えます:

function registerjs()
{
    wp_register_script('pcjavascript', plugins_url('PerformantCalendar.js', __FILE__));
    //wp_dequeue_script('pcjavascript');
    //echo "ichi";
    wp_enqueue_script('pcjavascript');
    echo "ni";
}

add_action('wp_enqueue_scripts', 'registerjs');

JavaScriptファイルは次のようになります。

function monthNext()
{
    alert("In the haunted javascript file");
}

function monthPrev()
{
    alert("This also works");
}

アラートボックスのメッセージを変更しても、最初のメッセージでアラートが表示されます。スクリプトをデキューし、プラグインを無効にしてから再度有効にしてみました。私は何かが足りない。誰かが手伝ってくれる?

3
mobilemed

あなたのJSはキャッシュされています。開発中は、キャッシュを空にするだけです。しかし本番用のコードでは、wp_enqueue_scripts()がversion引数を取ることで、スクリプトのバージョン番号を設定することができます。これをキャッシュの無効化を目的としてクエリ文字列としてURLに追加します。 (注意、wp_register_script関数は実際にはwp_enqueue_script関数に組み込まれているので、必要なのは1つだけです。)

function registerjs()
{
    wp_enqueue_script('pcjavascript', plugin_dir_url(__FILE__) . 'PerformantCalendar.js', array(), '1.0', false);
}

add_action('wp_enqueue_scripts', 'registerjs');

これにより、ページのソースのURLの末尾に "?ver = 1.0"が追加されます。次に、.jsファイルを更新した後、バージョン番号を変更します。

function registerjs()
{
    wp_enqueue_script('pcjavascript', plugin_dir_url(__FILE__) . 'PerformantCalendar.js', array(), '1.1', false);
}

add_action('wp_enqueue_scripts', 'registerjs');

これにより、代わりに "?ver = 1.1"が追加され、ブラウザはファイルを別のファイルとして認識し、キャッシュコピーを使用する代わりにサーバーに要求します。 wp_enqueue_scripts()についての詳細な情報は ここにあります。

5
Myles