到目前為止,我們已經(jīng)了解了主題定制器是什麼、它是如何工作的以及它獨(dú)有的組件。我們甚至討論瞭如何將選項(xiàng)序列化到資料庫中,以便我們稍後在使用主題時可以檢索它們。
為此,我們是時候開始使用主題定制器進(jìn)行我們自己的工作了。在本文中,我們將了解傳輸、它們的工作原理以及它們兩種主要方法的差異。
此外,我們將在 WordPress 的現(xiàn)有部分之一中引入我們自己的控件,並了解它如何與各種傳輸模型配合使用。
關(guān)於交通的一切
在我們實(shí)際寫任何程式碼之前,我們需要熟悉的另一個概念是 transport
s 的概念。本質(zhì)上,這就是主題定制器將資料發(fā)送到主題以顯示更改的方式。
資料傳輸有兩種方式:
-
refresh
- 這是預(yù)設(shè)方法。使用此方法,當(dāng)使用者在主題自訂器中變更設(shè)定時,顯示主題的框架將在顯示變更之前刷新。 -
postMessage
- 此方法必須明確說明,但它提供了更增強(qiáng)的使用者體驗(yàn)。使用此方法時,將發(fā)出非同步請求,並且主題的外觀將更新以反映使用者的設(shè)置,而無需重新載入頁面。
這個概念很簡單,對吧?
在本文中,我們將實(shí)作新主題自訂設(shè)定的兩個版本。首先,我們將介紹一個使用 refresh
傳輸?shù)脑O(shè)定。之後,我們將改進(jìn)設(shè)置,使其使用 postMessage
傳輸。
在文章末尾,我將連結(jié)到兩個版本的程式碼,以便您可以在本機(jī)上下載並安裝某些內(nèi)容,而不必簡單地參考本文。
話雖如此,讓我們開始吧。
實(shí)作我們的新設(shè)定
在本文中,我們將介紹一個設(shè)置,允許使用者更改其主題中存在的所有錨點(diǎn)的顏色。我們很少需要在整個網(wǎng)站上普遍更改錨點(diǎn)的顏色,但實(shí)施此特定設(shè)定將教您以下內(nèi)容:
- 如何在現(xiàn)有部分中實(shí)作新設(shè)定
- 如何使用
WP_Customize_Color_Control
- #如何使用
refresh
傳輸方法以及如何使用postMessage
傳輸方法
顯然,還有很多工作要做。
添加我們的鉤子
首先,讓我們?yōu)?index.php 模板添加一個錨點(diǎn),以便我們可以實(shí)際著色。這是一個簡單的改變。只需確保您的 index.php 模板包含以下內(nèi)容:
<div id="content"> This is the content. <a href="#">This is an anchor</a> so that we can tell the Theme Customizer is working. </div><!-- /#content -->
接下來,我們需要引入一個掛鉤到 customize_register
操作的函數(shù):
function tcx_register_theme_customizer( $wp_customize ) { // More to come... } add_action( 'customize_register', 'tcx_register_theme_customizer' );
在這裡,我們定義了一個函數(shù),用於介紹我們的新設(shè)定。請注意,此函數(shù)最重要的一點(diǎn)是它接受單個參數(shù) - wp_customize
- 這允許我們將我們的部分、設(shè)定和控制項(xiàng)新增至主題自訂器。
回想上一篇文章,我們提到 WordPress 提供了許多部分,因此我們不必添加自己的部分。在本例中,我們將利用預(yù)先定義的 colors
部分。
實(shí)作設(shè)定
在 tcx_register_theme_customizer
函數(shù)的上下文中,加入以下程式碼區(qū)塊:
$wp_customize->add_setting( 'tcx_link_color', array( 'default' => '#000000' ) );
這表示我們正在向定制器引入一個新設(shè)置,ID 為 tcx_link_color
,預(yù)設(shè)顏色為黑色。
當(dāng)我們實(shí)作顏色選擇器時,這將發(fā)揮作用。那麼就讓我們現(xiàn)在就開始吧。在上面的程式碼區(qū)塊之後,將以下區(qū)塊新增到您的函數(shù)中:
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array( 'label' => __( 'Link Color', 'tcx' ), 'section' => 'colors', 'settings' => 'tcx_link_color' ) ) );
這將在 colors
部分引入顏色選擇器控制項(xiàng)。它將添加一個國際化標(biāo)籤,內(nèi)容為“連結(jié)顏色”,並將自身綁定到我們在上面第一段程式碼中定義的 tcx_link_color
設(shè)定。
函數(shù)的最終版本應(yīng)如下所示:
function tcx_register_theme_customizer( $wp_customize ) { $wp_customize->add_setting( 'tcx_link_color', array( 'default' => '#000000' ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array( 'label' => __( 'Link Color', 'tcx' ), 'section' => 'colors', 'settings' => 'tcx_link_color' ) ) ); } add_action( 'customize_register', 'tcx_register_theme_customizer' );
演示控制項(xiàng)
此時,儲存您的工作,啟動 WordPress,導(dǎo)航到主題自訂器,您應(yīng)該會看到以下內(nèi)容:
#請注意,您可以展開顏色選擇器,選擇顏色,並且通常按預(yù)期使用它;然而,內(nèi)容的錨點(diǎn)根本沒有改變。接下來,我們將以下函數(shù)加入到 functions.php 檔案中。
function tcx_customizer_css() { ?> <style type="text/css"> a { color: <?php echo get_theme_mod( 'tcx_link_color' ); ?>; } </style> <?php } add_action( 'wp_head', 'tcx_customizer_css' );
顯然,該函數(shù)已掛接到 wp_head
操作中。它負(fù)責(zé)從選項(xiàng)表中讀取與我們的新設(shè)定相對應(yīng)的值(由 tcx_link_color
標(biāo)識),然後將該值寫入頁面標(biāo)題中的 style
區(qū)塊中。
完成後,刷新主題定制器,您應(yīng)該注意到每當(dāng)您選擇顏色時就會發(fā)生變化。您還應(yīng)該注意到,每當(dāng)更改顏色以及標(biāo)題、標(biāo)語或靜態(tài)首頁選項(xiàng)時,頁面就會閃爍。
更新我們的交通
現(xiàn)在我們已經(jīng)完成了這項(xiàng)工作,我們可以引入一些更改,這些更改將改善用戶體驗(yàn),因?yàn)樗婕笆褂?WordPress 主題定制器更改主題選項(xiàng)。
首先,我們需要更新 footer.php 模板,使其包含對 wp_footer()
的調(diào)用。這樣我們就可以在主題的頁腳中加載 JavaScript,這是 postMessage
傳輸所必需的。
頁腳應(yīng)如下所示:
<div id="footer"> © <?php echo date( 'Y' ); ?> <?php bloginfo( 'title' ); ?> All Rights Reserved </div><!-- /#footer --> <?php wp_footer(); ?> </body> </html>
接下來,我們需要更新 functions.php 中的 add_setting
調(diào)用,以便它使用正確的傳輸方法。
更新代碼,使其看起來像這樣:
$wp_customize->add_setting( 'tcx_link_color', array( 'default' => '#000000', 'transport' => 'postMessage' ) );
最后,不要刪除我們在上一個版本中定義的函數(shù) tcx_customizer_css
,因?yàn)樗匀恍枰x取我們?yōu)殄^點(diǎn)選擇的值 - 我們只是異步保存它們而不是刷新時保存。
現(xiàn)在在主題的根目錄中創(chuàng)建一個名為 js 的目錄,然后將 theme-customizer.js 文件添加到該目錄中。
在此 JavaScript 文件中,我們需要添加以下代碼塊。通常,我喜歡嘗試解釋我們正在做的事情,但在這種情況下,在顯示代碼之后檢查會更容易。
(function( $ ) { "use strict"; wp.customize( 'tcx_link_color', function( value ) { value.bind( function( to ) { $( 'a' ).css( 'color', to ); } ); }); })( jQuery );
在這段代碼中,請注意,我們可以訪問 wp
JavaScript 對象,該對象為我們提供 customize
消息,就像服務(wù)器端 $wp_customize->add_setting()
的設(shè)置一樣。
接下來,請注意該函數(shù)接受設(shè)置的 ID,這是一個回調(diào)函數(shù),該函數(shù)接收具有原始值的對象,然后允許我們將另一個函數(shù)綁定到該對象以進(jìn)行更改每當(dāng)該對象發(fā)生更改時。
還在我身邊嗎?
另一種說法是:當(dāng)鏈接顏色更改時,只要使用顏色選擇器,我們就可以更改主題的顯示。
話雖如此,讓我們重新訪問 functions.php 文件并引入一個新函數(shù),以便我們可以正確地將 JavaScript 文件排入隊(duì)列。
首先,我們將引入一個名為 tcx_customizer_live_preview()
的函數(shù),它將掛鉤 customize_preview_init
操作:
function tcx_customizer_live_preview() { // More to come } add_action( 'customize_preview_init', 'tcx_customizer_live_preview' );
接下來,我們將對 wp_enqueue_script
進(jìn)行標(biāo)準(zhǔn)調(diào)用,這將引入我們的 theme-customizer.js 文件,但請注意,我們將最后一個參數(shù)作為 true
傳遞,因此該腳本已添加到文檔的頁腳:
wp_enqueue_script( 'tcx-theme-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'jquery', 'customize-preview' ), '0.3.0', true );
該函數(shù)的最終版本如下所示:
function tcx_customizer_live_preview() { wp_enqueue_script( 'tcx-theme-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'jquery', 'customize-preview' ), '0.3.0', true ); } add_action( 'customize_preview_init', 'tcx_customizer_live_preview' );
保存您的所有工作。假設(shè)您已正確完成所有操作,您現(xiàn)在應(yīng)該能夠更改標(biāo)題、標(biāo)語、鏈接顏色和靜態(tài)首頁選項(xiàng),無需刷新頁面。
更好的用戶體驗(yàn),是嗎?
但還有更多......
我們在本文中查看了很多。以至于本文的源代碼已發(fā)布為兩個不同的下載:
- 首先,下載使用
refresh
傳輸?shù)陌姹?/li> - 然后,下載使用
postMessage
傳輸?shù)陌姹?/li>
但是我們還沒有完成。在下一篇文章中,我們將了解如何引入我們自己的原創(chuàng)部分以及我們自己的原創(chuàng)設(shè)置和控件來完善本系列。
現(xiàn)在,請嘗試使用我們上面提供的代碼,以便為下一篇文章的工作做好準(zhǔn)備!
以上是增強(qiáng)您的 WordPress 主題:使用主題定制器引入全新設(shè)置的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

要回滾WordPress版本,可使用插件或手動替換核心文件,並禁用自動更新。 1.使用WPDowngrade等插件輸入目標(biāo)版本號即可自動下載替換;2.手動下載舊版WordPress並通過FTP替換wp-includes、wp-admin等文件但保留wp-config.php和wp-content;3.在wp-config.php中添加代碼或使用過濾器禁用核心自動更新以防止再次升級。操作前務(wù)必備份網(wǎng)站和數(shù)據(jù)庫,確保安全可靠。長期建議保持最新版以保障安全性與功能支持。

在WordPress中創(chuàng)建自定義短代碼的步驟如下:1.通過functions.php文件或自定義插件編寫PHP函數(shù);2.使用add_shortcode()將函數(shù)綁定到短代碼標(biāo)籤;3.在函數(shù)中處理參數(shù)並返回輸出內(nèi)容。例如,創(chuàng)建按鈕短代碼時可定義顏色和鏈接參數(shù),實(shí)現(xiàn)靈活配置。使用時可在編輯器中插入類似[buttoncolor="red"url="https://example.com"]點(diǎn)擊這裡[/button]的標(biāo)籤,並可通過do_shortcode()在模

WordPress導(dǎo)致服務(wù)器CPU使用率飆升的主要原因包括插件問題、數(shù)據(jù)庫查詢效率低、主題代碼質(zhì)量差或流量激增。 1.首先通過top、htop或控制面板工具確認(rèn)是否為WordPress引起的高負(fù)載;2.進(jìn)入故障排查模式逐步啟用插件排查性能瓶頸,使用QueryMonitor分析插件執(zhí)行情況並刪除或替換低效插件;3.安裝緩存插件、清理冗餘數(shù)據(jù)、分析慢查詢?nèi)照I以優(yōu)化數(shù)據(jù)庫;4.檢查主題是否存在過度加載內(nèi)容、複雜查詢或缺乏緩存機(jī)制等問題,建議用標(biāo)準(zhǔn)主題測試對比並優(yōu)化代碼邏輯。按照上述步驟逐一排查可定位並解

優(yōu)化WordPress站點(diǎn)不依賴插件的方法包括:1.使用輕量級主題,如Astra或GeneratePress,避免功能堆砌的主題;2.手動壓縮和合併CSS、JS文件,減少HTTP請求;3.上傳前優(yōu)化圖片,使用WebP格式並控製文件大小;4.配置.htaccess啟用瀏覽器緩存,並接入CDN提升靜態(tài)資源加載速度;5.限製文章修訂版本並定期清理數(shù)據(jù)庫冗餘數(shù)據(jù)。

MinifyingJavaScript文件可通過刪除空白、註釋和無用代碼來提升WordPress網(wǎng)站加載速度。 1.使用支持合併壓縮的緩存插件如W3TotalCache,在“Minify”選項(xiàng)中啟用並選擇壓縮模式;2.使用專用壓縮插件如FastVelocityMinify,提供更精細(xì)控制;3.手動壓縮JS文件並通過FTP上傳,適用於熟悉開發(fā)工具的用戶。注意部分主題或插件腳本可能與壓縮功能衝突,啟用後需徹底測試網(wǎng)站功能。

TransientsAPI是WordPress中用於臨時存儲可自動過期數(shù)據(jù)的內(nèi)置工具,其核心函數(shù)為set_transient、get_transient和delete_transient。相比OptionsAPI,transients支持設(shè)置生存時間(TTL),適合緩存API請求結(jié)果、複雜計(jì)算數(shù)據(jù)等場景。使用時需注意key命名唯一性與命名空間、緩存“懶刪除”機(jī)制及對象緩存環(huán)境下可能不持久的問題。典型應(yīng)用場景包括減少外部請求頻率、控制代碼執(zhí)行節(jié)奏和提升頁面加載性能。

對象緩存可輔助持久存儲,適用於高訪問低更新、可容忍短暫丟失的數(shù)據(jù)。 1.適合用緩存“持久化”的數(shù)據(jù)包括用戶配置、熱門商品信息等,能從數(shù)據(jù)庫恢復(fù)但使用緩存可加速訪問。 2.選擇Redis等支持持久化的緩存後端,啟用RDB或AOF模式,並配置合理過期策略,但不能替代主數(shù)據(jù)庫。 3.設(shè)置長TTL或永不過期鍵,採用清晰鍵名結(jié)構(gòu)如user:1001:profile,修改數(shù)據(jù)時同步更新緩存。 4.可結(jié)合本地與分佈式緩存,本地存小數(shù)據(jù)、Redis存大數(shù)據(jù)並用於重啟後恢復(fù),同時注意一致性與資源佔(zhàn)用問題。

防止評論垃圾信息最有效的方式是通過程序化手段自動識別並攔截。 1.使用驗(yàn)證碼機(jī)制(如GooglereCAPTCHA或hCaptcha)可有效區(qū)分人類與機(jī)器人,尤其適合公眾網(wǎng)站;2.設(shè)置隱藏字段(Honeypot技術(shù)),利用機(jī)器人自動填寫特性識別垃圾評論,不影響用戶體驗(yàn);3.檢查評論內(nèi)容關(guān)鍵詞黑名單,通過敏感詞匹配過濾垃圾信息,需注意避免誤判;4.判斷評論頻率與來源IP,限制單位時間內(nèi)的提交次數(shù)並建立黑名單;5.使用第三方反垃圾服務(wù)(如Akismet、Cloudflare)提升識別準(zhǔn)確性??筛鶕?jù)網(wǎng)站
