新聞中心

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


咨詢(xún)
建站咨詢(xún)
