web-dev-qa-db-ja.com

Wordpress特定のページ/投稿でプラグインを無効にする

特定のページで(アクティブな)プラグインを無効にするための本当に効果的な方法を知っている人はいますか? Webサイトの一部のページには実際には必要のないプラグインがいくつかあり、Webサイトの読み込み速度を遅くするCSSファイルとJavaScriptファイルがたくさんあり、他のファイルと競合する場合があります。

プラグインのコードなどをいじることができることは知っていますが、実際には効果的ではありません。

何か案は?

前もって感謝します!

24
Gabriel

「プラグインオーガナイザー」を試してくださいWordpress Jeff Sterupによるプラグイン。その設定で「選択的なプラグインの読み込み」を有効にする必要があります(有効にするための指示に従ってください)

次に、投稿/ページエディタの作成ウィンドウの下に、そのページの特定のプラグインを無効にするチェックボックス付きのボックスがあります

おそらく20以上のGoogleとWordpressプラグインリポジトリの検索で最終的に簡単な解決策を見つけました。

37
Jesse B

ここにアイデアがあります

 add_filter( 'option_active_plugins', 'lg_disable_cart66_plugin' );

 function lg_disable_cart66_plugin($plugins){

      if(strpos($_SERVER['REQUEST_URI'], '/store/') === FALSE AND strpos($_SERVER['REQUEST_URI'], '/wp-admin/') === FALSE) {
         $key = array_search( 'cart66/cart66.php' , $plugins );
         if ( false !== $key ) unset( $plugins[$key] );
      }

     return $plugins;
 }
17
mainpart

私はそれが古いことを知っていますが、このスレッドはまさに私が必要としたものでした。

Numediawebの答えに対する唯一の注意点は、削除アクションには追加アクションと同じ優先順位が必要であるということです

プラグインのフック

add_action('wp_print_styles', 'easy_fancybox_enqueue_styles', 999);
add_action('wp_enqueue_scripts', 'easy_fancybox_enqueue_scripts', 999);
add_action('wp_head', 'easy_fancybox', 999);

フックを削除するコード

function remove_easy_fancybox() {

     global $post;
     $ids = array(12,34,55);
     if(in_array($post->ID,$ids)):
          remove_action('wp_print_styles', 'easy_fancybox_enqueue_styles', 999);
          remove_action('wp_enqueue_scripts', 'easy_fancybox_enqueue_scripts',999);
          remove_action('wp_head', 'easy_fancybox', 999);

          wp_dequeue_script( 'jquery.fancybox' );
          wp_dequeue_script( 'jquery.easing' );
          wp_dequeue_script( 'jquery.mousewheel' );
          wp_dequeue_script( 'jquery.metadata' );
     endif;
}

add_action('wp_head', 'remove_easy_fancybox', 1);

から http://codex.wordpress.org/Function_Reference/remove_action

重要:フックを削除するには、フックが追加されたときに$ function_to_remove引数と$ priority引数が一致する必要があります。これは、フィルターとアクションの両方に当てはまります。削除に失敗しても警告は表示されません。

特定の投稿IDに対してのみアクションを実行するifステートメントを含めました。

7
James Jackson

削除するプラグインに、除外するページを設定するオプションメニューがない場合は、まず確認してください。

次に、exのプラグインアクションフックを探します。

_add_action('wp_head', 'easy_fancybox', 999);
_

これはwordpressヘッダーにフックする簡単なfancyboxプラグインの例です。これを削除するために、この関数を_functions.php_のwp_head();のインスタンスの前に配置しましたと呼ばれます:

_function remove_easy_fancybox() {

     remove_action('wp_head', 'easy_fancybox_enqueue_styles');
     remove_action('wp_head', 'easy_fancybox_enqueue_scripts');
     remove_action('wp_head', 'easy_fancybox');

     wp_dequeue_script( 'jquery.fancybox' );
     wp_dequeue_script( 'jquery.easing' );
     wp_dequeue_script( 'jquery.mousewheel' );
     wp_dequeue_script( 'jquery.metadata' );
}

add_action('wp_head', 'remove_easy_fancybox', 1);
_
5
numediaweb

無料のプラグインFreesoul Deactivate Pluginsを使用して、特定のページ、投稿、カスタム投稿、アーカイブの特定のプラグインを無効にできるようになりました。設定ページは本当にシンプルです

1
Jose