新聞中心

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名申請、網頁空間、營銷軟件、網站建設、古藺網站維護、網站推廣。
談到wordpress的性能,我們有很多關于插件的說法。每個插件都添加了必須執(zhí)行的PHP代碼,通常包括腳本和樣式,甚至可能對數據庫執(zhí)行額外的查詢。這意味著不必要的插件會影響頁面速度,并可能對用戶體驗和頁面排名產生負面影響。
例如,考慮一個在首頁上構建和顯示自定義表單的插件,例如Contact Form 7。通常,您在單個頁面上只需要一個表單,但理想情況下,您可能希望使用插件的短代碼在任何頁面上嵌入表單。因此,Contact Form 7會在您網站的每個頁面上加載腳本和樣式。
但是您真的想運行插件代碼并在WordPress網站的每個頁面上包含腳本和樣式嗎?
在這篇文章中,我將向您展示如何防止在特定文章/頁面上加載不必要的插件,以便您可以安裝其他插件(當然不要發(fā)瘋),并且仍然可以快速加載您的WordPress網站。為了完成此任務,我們將在特定文章和頁面上以編程方式禁用WordPress插件。這是一個四步過程:
- 選擇適合您需求的最受歡迎的插件,并比較它們的功能和對頁面速度的影響。
- 在頁面加載之前以編程方式列出和過濾插件。
- 使用mu-plugin以編程方式過濾和停用不必要的插件。
- 使用插件過濾和停用不必要的插件。
- 跟蹤網站性能。
選擇插件時要遵循的三個一般規(guī)則
選擇插件時,以下一般規(guī)則可能會有所幫助:
- 僅安裝來自可信賴開發(fā)人員的編碼良好的插件:考慮活躍安裝、用戶評級、客戶端支持、更新頻率以及來自WordPress社區(qū)的任何有用信息。
- 首選可擴展插件:在性能方面比較類似插件,利用瀏覽器開發(fā)工具和/或在線服務(如Google Pagespeed Insights、 Pingdom和GTmetrix)來評估每個插件對頁面加載時間的影響。
- 不要安裝不必要的插件:這應該是顯而易見的,但值得一提的是,出于安全和性能原因,您永遠不應該安裝您并不真正需要的插件。此外,請確保您不時檢查您的插件并卸載那些您不再需要和不再使用的插件。
WordPress插件目錄提供了我們在選擇插件時應始終考慮的相關信息
一個真實的例子
Contact Form 7是一個很棒的插件,可以在WordPress中構建和顯示表單。它為我們的目的提供了一個完美的示例,因為它在每個頁面上都包含以下文件,即使頁面不包含表單:
- style.css
- scripts.js
Chrome DevTools Network面板提供有關加載頁面時發(fā)出的網絡請求的詳細信息
插件可能會減慢您的網站速度,但我們可以強制WordPress根據請求URL有選擇地停用插件。如果您是開發(fā)人員,請閱讀下一節(jié),我們將學習如何以編程方式管理插件并構建過濾不必要插件的mu-插件。如果您不是開發(fā)人員,請隨時跳到專門介紹允許過濾和組織插件的插件部分。
如何以編程方式獲取所有活動插件的列表
首先,您可以使用簡單的PHP代碼片段獲取WordPress網站上所有活動插件的列表。您可以在自定義插件或免費WordPress 插件(如Code Snippets)的編輯器中添加以下代碼。如果您決定使用自定義插件,請不要忘記添加插件標題,如下所示。
wp_options表中的活動插件
每個活動插件都存儲在wp_options表中,其中options_name的值active_plugins。所以我們可以通過一個簡單的get_option調用來提取這些插件的列表。這是代碼:
0 ){
$plugins = "- ";
foreach ( $active_plugins as $plugin ) {
$plugins .= "
- " . $plugin . " "; } $plugins .= "
更改插件詳細信息,然后保存active-plugins.php文件并將其上傳到您的/wp-content/plugins/文件夾中。創(chuàng)建一個新的博客文章并包含[activeplugins]短代碼。它現在應該顯示所有活動插件的列表。
活動插件列表顯示文件夾和每個插件的名稱
完成后,我們可以更進一步,利用option_active_plugins過濾器以編程方式添加或刪除插件。此過濾器屬于option_$option_name過濾器組,允許在從數據庫中檢索到任何選項后對其進行過濾。由于所有活動插件都存儲在wp_options表中的 option_value為active_plugins,option_active_plugins過濾器提供了一種以編程方式激活或停用插件的方法。
所以我們可以以編程方式激活插件。舉個例子,你想激活ACF插件。這是代碼:
add_filter( 'option_active_plugins', function( $plugins ){
$myplugin = "advanced-custom-fields/acf.php";
if( !in_array( $myplugin, $plugins ) ){
$plugins[] = $myplugin;
}
return $plugins;
} );
在此示例中,我們假設插件已安裝但尚未激活。
上面的代碼只是將插件添加到我們網站每個頁面上的活動插件列表中。不是很有用,但你明白了。
此外,插件應該在任何其他插件之前加載,否則我們的代碼無法按預期工作。為了優(yōu)先考慮我們的插件加載,我們必須在Must-use插件中添加我們的腳本。
如何構建一個必須使用的插件來以編程方式停用插件
我們將構建一個Must use plugin,它是一個駐留在特定/wp-content子文件夾中的插件,并在任何常規(guī)插件之前運行。
不幸的是,在這種情況下,我們不允許使用條件標簽,因為條件查詢標簽在查詢運行之前不起作用。在此之前,它們總是返回false。所以我們必須以其他方式檢查我們的條件,例如通過解析請求URI并檢查相應的URL路徑。
將以下代碼添加到active-plugins.php文件中,然后將其移動到/wp-content/mu-plugins:
$request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
$is_admin = strpos( $request_uri, '/wp-admin/' );
if( false === $is_admin ){
add_filter( 'option_active_plugins', function( $plugins ){
global $request_uri;
$is_contact_page = strpos( $request_uri, '/contact/' );
$myplugin = "contact-form-7/wp-contact-form-7.php";
$k = array_search( $myplugin, $plugins );
if( false !== $k && false === $is_contact_page ){
unset( $plugins[$k] );
}
return $plugins;
} );
}
讓我們深入研究一下這段代碼:
- parse_url返回請求的URL的路徑。
- strpos查找第一次出現的位置,如果沒有找到字符串則
'/wp-admin/'返回false。$is_admin變量存儲返回值。 - 該條件阻止過濾器在管理面板中運行,以便我們可以安全地訪問插件設置頁面。如果請求URI不包含
'/wp-admin/',那么我們調用option_active_plugins過濾器。 - 最后,如果當前插件不在活動插件數組中,并且當前頁面的URI不包含
/contact/,那么我們從$plugins.
現在保存您的插件并將其上傳到您的/wp-content/mu-plugins/文件夾。清除緩存并將[activeplugins]短代碼添加到多個頁面。它應該只顯示在/contact/頁面上的列表中。
script.js文件從頁面資產列表中消失
然后我們可以使用一些額外的PHP一次性取消設置一組插件。
$request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
$is_admin = strpos( $request_uri, '/wp-admin/' );
if( false === $is_admin ){
add_filter( 'option_active_plugins', function( $plugins ){
global $request_uri;
$is_contact_page = strpos( $request_uri, '/contact/' );
$myplugins = array(
"contact-form-7/wp-contact-form-7.php",
"code-snippets/code-snippets.php",
"query-monitor/query-monitor.php",
"autoptimize/autoptimize.php"
);
if( false === $is_contact_page ){
$plugins = array_diff( $plugins, $myplugins );
}
return $plugins;
} );
}
在這個例子中,我們首先定義了一個要刪除的插件數組,然后我們用array_diff刪除它們。此函數“將array1與一個或多個其他數組進行比較,并返回array1中不存在于任何其他數組中的值”。
你可以從Gist下載這個插件的完整代碼。
現在您可以將插件上傳到mu-plugins文件夾并檢查您網站的任何頁面。mu-plugin可以高度自定義添加更多條件和檢查更多URI,但每個條件都必須手動添加到代碼中,從長遠來看,這個簡單的mu-plugin可能會很困難且維護起來很麻煩。
因此,您可能需要查看以下插件。
過濾插件的插件
作為替代方案,我們可以查看許多優(yōu)秀的插件,這些插件允許我們添加可以從WordPress管理面板管理的過濾器。
Plugin Load Filter
Plugin Load Filter是需要在多種條件下過濾插件的WordPress用戶的免費選項。
Plugin Load Filter允許過濾管理面板和站點頁面中的插件
目前,它支持以下功能:
- 文章格式
- 自定義文章類型
- Jetpack模塊
- WP嵌入內容
- URL過濾器(REST API / Heartbeat / AJAX / AMP / 等)
激活過濾器后,管理員用戶可以指定必須在站點中應用它的位置,如下圖所示。
一旦過濾器被激活,站點管理員可以在頁面類型過濾器激活選項卡中設置他們的例外
Plugin Organizer
Plugin Organizer是一個流行的插件,擁有超過10,000的活躍安裝。這是一個更全面的插件,允許站點管理員:
- 通過文章類型和請求URL有選擇地停用插件
- 按用戶角色選擇性停用插件
- 創(chuàng)建插件組
- 更改插件加載順序
- 附加的功能
插件管理器設置頁面
全局插件選項頁面提供了一個拖放工具,允許管理員用戶全局禁用插件,防止WordPress在站點的任何地方運行一個或多個插件,除非它對單個文章或頁面進行了不同的指定。相同的功能可用于搜索頁面和文章類型。
CF7已被全局禁用
該插件在文章編輯屏幕中添加了一個元框,以便管理員可以覆蓋全局和文章類型設置。通過檢查常規(guī)設置屏幕中的相應項目,也可以為文章類型激活此功能。一個很棒的功能是插件管理器調試消息,它為站點管理員提供有關影響每個站點頁面的插件的有用信息。
更多信息可以在他們的文檔中找到 。
聯系頁面上的插件管理器自定義元框
Perfmatters插件
一種部分不同的方法來自Perfmatters插件。這是一種高級替代方案,允許站點管理員根據URL或自定義文章類型有選擇地加載主題和插件資產。它是插件和主題優(yōu)化的絕佳工具。
Perfmatters腳本管理器
該插件具有稱為腳本管理器的功能,其中所有內容都按插件或主題名稱分組在一起。這使得一次禁用整個插件或其中的單個CSS和JavaScript文件變得非常容易。
您甚至可以使用regex禁用腳本。這對于具有更復雜的URL結構或動態(tài)生成的頁面的站點特別有用。
這非常強大,可以大大提高您的WordPress網站(尤其是您的主頁)的速度。這可以用于以下幾個示例:
- 社交媒體分享插件應該只加載到您的文章中。您可以輕松地在任何地方禁用它并僅加載文章類型,甚至自定義文章類型。
- 流行的Contact Form 7插件會在每個頁面和文章上自行加載。您可以一鍵輕松地在任何地方禁用它,并僅在您的聯系頁面上啟用。
- 如果您已升級到WordPress 5.0但未使用Gutenberg區(qū)塊編輯器,也許您仍在使用經典編輯器,則可以在站點范圍內添加兩個額外的前端腳本,您可以禁用它們:
/wp-includes/css/dist/block-library/style.min.css和/wp-includes/css/dist/block-library/theme.min.css
你可以從這篇perfmatters的評論中看到,它減少了20.2 的總加載時間。僅在他們的主頁上,他們就能夠將HTTP請求的數量從46個減少到30個!頁面大小也從506.3KB縮小到451.6KB。
使用perfmatters插件進行速度測試
如何跟蹤性能:瀏覽器的開發(fā)工具
性能優(yōu)化高速公路上的一個基本步驟是加載時間測量。我們有許多插件和在線工具可用于跟蹤網站性能,例如Google Pagespeed Insights和Pingdom。但首先,我們可以使用瀏覽器的開發(fā)工具,它提供了很多有意義的信息。
每個瀏覽器檢查器都有一個網絡面板,顯示網絡請求和相關信息的列表。請按照以下鏈接獲取詳細文檔:
- 火狐開發(fā)工具
- Chrome開發(fā)者工具
- Microsoft Edge F12開發(fā)工具
- Safari Web Inspector指南
在帶有18個活動插件的WordPress安裝中,我們使用Firefox Dev Tools反復檢查了一個文章頁面。在安裝任何過濾插件之前,我們首先測量了頁面速度并列出了請求的資源。下圖顯示了Firefox網絡監(jiān)視器中可用的性能分析工具的輸出。
Firefox性能分析工具
網絡監(jiān)視器提供以下結果(空緩存):
- 大?。?55.19Kb
- 加載時間:1.24秒
- 請求數:12
接下來,我們安裝了插件管理器來阻止WordPress運行CF7插件。餅圖略有變化。
Firefox性能分析工具
現在頁面加載速度更快(空緩存):
- 大?。?04.21Kb
- 加載時間:0.80秒
- 要求:8
接下來,我們停用了幾個不必要的插件,下圖顯示了我們對頁面性能的改進程度。
Firefox性能分析工具
禁用所有不必要的插件后,網絡監(jiān)視器的空瀏覽器緩存返回以下數據:
- 大?。?01.98Kb
- 加載時間:0.46秒
- 要求:8
我們可以比較我們的測試結果。資源大小減少了60.04%,加載時間從1.24秒減少到0.46秒,HTTP請求數從12減少到8。這證實了插件可以影響頁面性能,我們可以提高頁面速度通過利用插件過濾器。
小結
無論您是構建自己的腳本還是安裝第三方工具,在性能優(yōu)化方面,組織和過濾插件都是您應該始終考慮的事情。請記住,并非所有插件的開發(fā)都考慮到了性能。因此,明智的做法是花一些時間來確定正在加載哪些插件資產(CSS和JS)以及加載到何處。
但是學習如何禁用WordPress插件只是旨在提高網站速度的許多其他技術之一。以下是與站點性能相關的其他一些有用指南和教程的列表:
- 如何加速WordPress(終極指南)
- 網站速度優(yōu)化初學者指南
- 如何減少TTFB以改善WordPress頁面加載時間
- 如何診斷WordPress站點上的Admin-Ajax高使用率
- 如何清理wp_options表和自動加載的數據
- 如何禁用WordPress插件(無法訪問WP-Admin)
網頁題目:如何在特定頁面禁用WordPress插件加載以提升速度
本文路徑:http://www.5511xx.com/article/coijjig.html


咨詢
建站咨詢
