web-dev-qa-db-ja.com

デキューしない

私はこのコードを含む プラグイン を使用し、プラグインファイルを編集せずにプラグインの代わりに私のテンプレートディレクトリに配置されるように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);
1
Amro Shalaby

スクリプトは、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' ));


}
3
cybmeta

loadScripts()が正しく登録/エンキューされている場合(ポストされたコードは使用されているフックを示していません)それは wp_enqueue_scriptsinit よりも後に実行されます。これはまだ追加されておらず、後で追加される予定です。仮定して:

add_action('wp_enqueue_scripts', 'drw_timeline_js', PHP_INT_MAX);

PHP_INT_MAX はあなたのコードが最後にそのフックで実行されることを保証します。

また、$result = $GLOBALS["jqueryTimelinrLoad"]->loadScripts();行やreturn行の理由や必要性も関数には表示されません。

0
s_ha_dum