web-dev-qa-db-ja.com

特定のページのスクリプトを登録解除する

特定のスクリプトを特定のページでの実行から除外する必要があります。私はこのコードを試してみましたが、うまくいきません - ページを調べてもスクリプトがまだ私のページのフッターに読み込まれています。

これがfunctions.phpの私のコードです。

add_action( 'wp_enqueue_scripts', 'my_deregister_javascript', 100 );

function my_deregister_javascript() {
   if ( !is_page('my-page') ) {
    wp_deregister_script( 'isotope' );
    wp_deregister_script( 'anystretch' );
    wp_deregister_script( 'imgliquid' );
    wp_deregister_script( 'retina' );
    wp_deregister_script( 'menutron' );
    wp_deregister_script( 'imagesloaded' );
    wp_deregister_script( 'myfunctions' );

     }
}

何が足りないの?ありがとうございます。

3
roybatty

あなたのコードには基本的な間違いがあります。次のコード

if ( !is_page('my-page') ) {

そのページででなければ、 スクリプトの登録解除 を意味します。 php演算子 を見てください。

! ->  Not !$x True if $x is not true

また、最初にこれらのスクリプトをエンキューするときに、この特定のページを除外しないでください。

add_action( 'wp_enqueue_scripts', 'my_register_javascript', 100 );

function my_register_javascript() {
   if ( !is_page('my-page') ) {

       // ENQUEUE/REGISTER SCRIPTS

     }
}

それははるかにクリーンでより効率的です。スクリプトを登録して再度登録を解除する意味がわかりません。スクリプトを最初から条件付きで登録する

8
Pieter Goosen

最後に私のフロントページだけがjqueryを読み込まないようにしました。

// remove jquery from ONLY the front page

add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );
function my_deregister_javascript() {
   if ( is_home('front-page') ) {
        wp_deregister_script( 'jquery' );
   }
}

注: is_page 最初の質問から、フロントページまたはhomeを引数に使用する場合は機能しません(is_homeを使用する必要があります(1時間かかる))。

3
Mark

それらのスクリプトをエンキューしてからデキューするのではなく、特定のページのスクリプトのみをエンキューすることを試みます。

function wpse158453_enqueue_scripts() {
    if(!is_page('my-page')) {
        wp_enqueue_script( 'jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js' );
        wp_enqueue_script( 'jquery-ui', '//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js' );
        wp_enqueue_script( 'jquery-custom', get_template_directory_uri() . '/admin/js/custom.js' );
    }
}
add_action( 'wp_enqueue_scripts', 'wpse158453_enqueue_scripts' );

それ以外の場合は、wp_deregister_scriptではなく wp_dequeue_script を試すことができます。

それが役立つことを願っています。

2
Steve Dimock
//Remove jquery only on front page

add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );

function my_deregister_javascript() {
  if ( is_front_page() ) {
    wp_deregister_script( 'jquery' );
 }
}

このスクリプトをあなたのテーマに追加してください function.php あなたがクエリを解決するでしょう

0
Viral M