2011-07-21 85 views
21

有誰知道一個真正有效的方法來禁用特定頁面上的插件(即活動)嗎?有些插件在網站的某些頁面中並不真正需要,它們有很多CSS和JavaScript文件會降低網站的加載速度,有時可能與其他文件發生衝突。Wordpress禁用特定頁面/帖子上的插件

我知道我可以搞砸插件的代碼等,但它不是真的有效。

任何想法?

在此先感謝!

回答

-5

您需要編輯插件的代碼。 WordPress不提供您正在尋找的功能。

5

首先檢查,如果您要刪除的插件沒有選項菜單,您可以在其中設置要排除的頁面。

二是,看你的插件行動掛鉤例如:

add_action('wp_head', 'easy_fancybox', 999); 

這是掛接到WordPress頭容易的fancybox插件的例子。要刪除它,我把這個功能在你functions.phpwp_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); 
34

嘗試「插件管理器」 WordPress插件傑夫施特魯普。您必須在其設置下啓用「選擇性插件加載」(請確保遵循其啓用它的指示)

然後在您的文章/頁面編輯器中,在撰寫窗口下方有一個框,其中包含用於禁用任何特定插件的複選框對於該頁面

花了我20多個Google和Wordpress插件存儲庫搜索最終找到一個簡單的解決方案。希望它也適用於你!

+1

This Works!對我來說運行良好的方法是全局禁用插件,然後特別啓用需要它的頁面/帖子。這可以減少在不需要的頁面/帖子上不必要地加載該開銷。謝謝Jesse B!/upvote –

+0

這裏是插件鏈接:https://wordpress.org/plugins/plugin-organizer - 我也推薦這與P3。只需在這裏查看:https://wordpress.org/plugins/p3-profiler/ –

+0

但我希望插件被加載到管理頁面中......而不是在wp-admin/admin-ajax.php中我怎樣才能做到這一點? @KevinWorthington – Revious

6

我知道它很老,但這個線程正是我所需要的。

唯一需要注意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參數必須匹配時添加掛鉤。這適用於 過濾器和操作。移除失敗時不會發出警告。

我已經包含了我的if語句,只對特定的帖子ID運行該操作,認爲它可能會有所幫助。

+0

在我需要使用'is_page()'從任何頁面中刪除插件功能的情況下,這對我來說很神奇。 –

11

Here is the idea

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; 
} 
+1

不錯,讓你瞭解@Jesse B提到的「Plugin Organizer」插件是如何工作的。 – codewaggle

+0

這應該是被接受的答案,非常乾淨,只需要一小段代碼。與這個整潔的解決方案相比,安裝像插件管理器這樣的插件的IMO是矯枉過正的。非常感謝! –

+0

我發現這個解決方案也在[這裏](https://kinsta.com/blog/disable-wordpress-plugins/)但是這並不妨礙插件排入其所有腳本和樣式。我試過這種方法去激活Divi Builder Plugin,這會在頁面中添加大量腳本,但我只是在某些場合需要它。也不能使用聯繫表單7.任何幫助? –

相關問題