私はこのコードを含む プラグイン を使用し、プラグインファイルを編集せずにプラグインの代わりに私のテンプレートディレクトリに配置されるようにjsの場所を変更したいです。
class jqueryTimelinrLoad {
public function registerScripts()
{
if (!wp_script_is( 'jquery', 'registered' )) wp_register_script( 'jquery' );
wp_deregister_script('jquery.timelinr');
wp_register_script('jquery.timelinr', JQTL_BASE_URL . '/assets/js/jquery.timelinr-1.0.js', array( 'jquery' ));
}
public function loadScripts() {
if (!is_admin()) {
if (!wp_script_is( 'jquery', 'queue' )) wp_enqueue_script( 'jquery' );
wp_enqueue_script('jquery.timelinr', JQTL_BASE_URL . '/assets/js/jquery.timelinr-1.0.js', array( 'jquery' ));
}
}
}
私はこれを試してみて、それはまだ新しいリンクが古いリンクも追加します
function drw_timeline_js () {
$result = $GLOBALS["jqueryTimelinrLoad"]->loadScripts();
wp_dequeue_script('jquery.timelinr');
wp_deregister_script( 'jquery.timelinr');
wp_enqueue_script('jquery.timelinr2', get_template_directory_uri() . '/js/jquery.timelinr-1.0.js', array( 'jquery' ));
return $result;
}
add_action('init', 'drw_timeline_js', 1);
スクリプトは、init
アクションの後に実行されるwp_enqueue_scripts
アクションフックにエンキューする必要があります。そのため、init
のデキューはうまくいきません。スクリプトがまだエンキューされていないからです。エンキューされたスクリプトが印刷される前に、wp_print_scripts
アクションが起動されるので、この時点でスクリプトを安全にデキューまたは登録解除できます。
add_action( 'wp_print_scripts', 'drw_timelinr_dequeue' );
function drw_timelinr_dequeue () {
wp_dequeue_script('jquery.timelinr');
}
add_action('wp_enqueue_scripts', 'drw_timeline_js');
function drw_timeline_js () {
wp_enqueue_script('jquery.timelinr2', get_template_directory_uri() . '/js/jquery.timelinr-1.0.js', array( 'jquery' ));
}
loadScripts()
が正しく登録/エンキューされている場合(ポストされたコードは使用されているフックを示していません)それは wp_enqueue_scripts
でinit
よりも後に実行されます。これはまだ追加されておらず、後で追加される予定です。仮定して:
add_action('wp_enqueue_scripts', 'drw_timeline_js', PHP_INT_MAX);
PHP_INT_MAX
はあなたのコードが最後にそのフックで実行されることを保証します。
また、$result = $GLOBALS["jqueryTimelinrLoad"]->loadScripts();
行やreturn
行の理由や必要性も関数には表示されません。