當前位置:首頁>WordPress建站>WordPress開發(fā)>使用Kirki框架更快地構(gòu)建WordPress Customizer定制器設(shè)置

使用Kirki框架更快地構(gòu)建WordPress Customizer定制器設(shè)置

開始之前,可能有些朋友對我所說的WordPress定制器Customizer有些陌生,其實就是我們后臺 外觀-自定義 進入的界面,如下圖所示,左邊的部分就是:

按照WordPress的開發(fā)規(guī)范,是建議開發(fā)者可以盡可能使用這個 Customizer 來添加設(shè)置選項。如果你曾經(jīng)開發(fā)過 Customizer 設(shè)置選項,你會發(fā)現(xiàn),添加一個選項所需要的代碼和步驟是有些多的,倡萌也很不喜歡這樣的添加方式。而今天介紹的主角 Kirki 就是用來更快地添加設(shè)置選項的框架。

Kirki?簡介

Kirki是一個免費的開源(由MIT許可)框架,專門為主題或插件開發(fā)者開發(fā),用于添加定制器(Customizer)設(shè)置選項到主題或插件中。

官方網(wǎng)站: https://kirki.org/

自2014年以來,Kirki的主要開發(fā)人員Aristeides Stathopoulos一直在研究該框架。通過不斷的更新和改進,Kirki在Github上建立了一個社區(qū),其中包括1000多顆星星和300個復(fù)制。

在Kirki之前,我從未接觸過WordPress的定制器( Customizer )。Kirki幫助我了解了定制器,并在更少的時間內(nèi)完成了很多工作!

LebCit – WordPress主題開發(fā)人員

WordPress 核心Customizer控件

默認情況下,WordPress 核心包括一些基本的Customizer控件。例如:文本、文本區(qū)域、復(fù)選框、單選、選擇、下拉頁面、電子郵件、網(wǎng)址、數(shù)字、隱藏和日期控件。

Kirki 除了支持這些核心控件,還支持其他二十多個。可以說,Kirki 控件涵蓋了更高級的用例。例如:

  • 排版
  • 調(diào)色板
  • TinyMCE編輯器
  • 可排序字段

Kirki 還提供WordPress和興中不可用的功能,例如自動生成CSS輸出和postMessage腳本。這些功能(我們將在本文后面介紹)可以輕松地將開發(fā)時間縮短一半。

Kirki 很慢?

通常針對Kirki的一種批評是它運行緩慢。實際上,這種批評被用于大多數(shù)框架(包括WordPress)。有道理吧?您正在加載很多您可能永遠不會使用的代碼。

在這種情況下,事實是相反。實際上,使用Kirki構(gòu)建的大多數(shù)時間控制面板實際上都比使用核心Controls構(gòu)建的相同時間面板要快。

這是因為Kirki添加了WordPress中未內(nèi)置的優(yōu)化層

初始化自定義程序后,WordPress會立即嘗試加載所有 Customizer 控件,即使它們位于某個部分或面板中,并且用戶還沒有與其進行交互。相比之下,Kirki將加載推遲到用戶與控件進行交互之前。

為了在實踐中看到這種效果,讓我們嘗試使用兩種不同方法添加50個顏色控件。

WordPress核心方法:

for ($i = 0; $i < 50; $i++){
	$wp_customize->add_setting( 'color_setting_hex_' . $i , array(
		'default' => '#0088CC'
	) );

	// add color picker control
	$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'color_setting_hex_' . $i, array(
		'label' => 'Color Control',
		'section' => 'title_tagline',
		'settings' => 'color_setting_hex_' . $i,
	) ) );
}

使用Kirki:

for ($i = 0; $i < 50; $i++) {
     Kirki::add_field( 'config_id', array(
         'type'        => 'color',
         'settings'    => 'color_setting_hex_' . $i,
         'label'       => __( 'Color Control', 'kirki' ),
         'section'     => 'title_tagline',
         'default'     => '#0088CC',
     ) );
 }

結(jié)果:

如您所見,使用Kirki時,初始加載速度要快得多。創(chuàng)建控件所需的代碼也更加簡潔。

將Kirki集成到您的項目中

有很多種方法可以將Kirki框架集成到您的項目中,官方文檔很好地介紹了不同的方法。

我建議開發(fā)人員指導(dǎo)用戶安裝Kirki插件版本,而不是直接在項目代碼中包含框架。可以使用TGMPA或提供的腳本來完成。

采取插件途徑的原因是Kirki經(jīng)常得到更新和改進。通過安裝插件版本,您的用戶將可以盡快獲取錯誤修復(fù)和安全更新。

相反,當您將框架作為項目的一部分包含在項目時,僅當您更新主題或插件時,用戶才會收到更新,更新的頻率可能比所需的少。

無論使用哪種方法,請確保在添加設(shè)置之前檢查Kirki是否已初始化:

// 如果 Kirki 類不存在就退出
if ( ! class_exists( 'Kirki' ) ) {
    return;
}

字段 Fields

在“WordPress核心方法”示例中,我們首先創(chuàng)建了一個設(shè)置,然后為其創(chuàng)建了一個控件。在大多數(shù)情況下,兩者是直接鏈接的。Kirki簡化了流程,并允許我們創(chuàng)建一個“字段”。創(chuàng)建字段后,它將在后臺為我們構(gòu)建設(shè)置和控件。

字段支持您期望的所有控制參數(shù)(標簽、描述、部分、默認值)以及某些Kirki特定參數(shù)。

'type'參數(shù)允許您選擇Kirki的30種控件類型之一:https://kirki.org/docs/controls/

部分 Sections

Customizer定制器部分允許您將控件分組在一起。WordPress有六個內(nèi)置部分,您也可以添加控件:

  • title_tagline –站點身份
  • colors –顏色
  • header_image –標題圖片
  • background_image –背景圖片
  • static_front_page –主頁設(shè)置
  • custom_css –自定義CSS

Kirki中的部分與核心中的完全相同,Kirki::add_section() 方法只是$wp_customize->add_section()的封裝,并接受相同的參數(shù)和值。

Kirki::add_section( 'section_id', array(
     'title'          => esc_html__( 'My Section', 'kirki' ),
     'description'    => esc_html__( 'My section description.', 'kirki' ),
 ) );

面板 Panels

面板允許您通過將各部分分組在一起來創(chuàng)建另一個層次結(jié)構(gòu)。WordPress 核心具有一個內(nèi)置面板,即“菜單”。

同樣,Kirki實現(xiàn)只是核心功能的封裝。

Kirki::add_panel( 'panel_id', array(
     'priority'    => 10,
     'title'       => esc_html__( 'My Panel', 'kirki' ),
     'description' => esc_html__( 'My panel description', 'kirki' ),
 ) );

'transport' => 'auto'

在創(chuàng)建“定制器控件”時,您有兩個用于傳輸參數(shù)的選項:

  • Refresh?–即刷新,每次用戶進行更改時,都會刷新預(yù)覽窗口來顯示更改。這可能需要幾秒鐘。
  • postMessage?–每次用戶進行更改時,預(yù)覽窗口都會使用Javascript更新,而無需刷新并且?guī)缀跏羌磿r的。

毫無疑問,postMessage是更新預(yù)覽器的上乘方法,應(yīng)盡可能使用它。但是,有一個缺點,使用postMessage意味著您需要為每個控件創(chuàng)建編寫自定義JS代碼。一個簡單的實現(xiàn)看起來像這樣:

// 實時更新網(wǎng)站標題...
wp.customize( 'blogname', function( value ) {
    value.bind( function( newval ) {
        $( '#site-title a' ).html( newval );
    } );
} );

當您進行許多設(shè)置時,就需要不斷重復(fù)這些代碼。

這就是Kirki大放異彩的地方,它添加了第三個選項:'transport'=>'auto'

'transport'=>'auto'與Kirki添加的另一個名為'output'的參數(shù)一起使用。定義兩個值后,Kirki將為您自動生成postMessage腳本。這意味著您無需編寫任何Javascript代碼即可獲得使用postMessage的所有好處。

使用transport =>'auto'的字段如下所示:

Kirki::add_field( 'config_id', array(
     'type'        => 'color',
     'settings'    => 'color_setting_hex',
     'label'       => __( 'Color Control', 'kirki' ),
     'section'     => 'colors',
     'default'     => '#0088CC',
     'transport'   => 'auto',
     'output' => array(
         array(
             'element'  => 'body',
             'property' => 'background-color',
         ),
     ),
 ) );

Kirki的這種省時功能意味著大部分時間不再需要編寫或排隊自己的postMessage腳本。

前端CSS輸出

創(chuàng)建Customizer設(shè)置的另一部分是在前端生成CSS輸出。一個簡單的示例可能如下所示:

/**
 * Output the Customizer CSS to wp_head
 */
function wptavern_customizer_css() {
	$bg_color = get_theme_mod( 'color_setting_hex' );
	?>
	<style>
		body {
			background-color: <?php echo sanitize_hex_color( $bg_color ); ?>;
		}
	</style>
	<?php
}
add_action( 'wp_head', wptavern_customizer_css );

像postMessage示例一樣,如果您有很多設(shè)置,就需要不斷重復(fù)類似的代碼。

幸運的是,'transport'=>'auto'也會為您處理前端輸出。即使在我們的簡化示例中, 'transport'=>'auto' 也將我們需要編寫的代碼減少了約50%。

總結(jié)

在本文中,我們僅考察了Kirki 框架的基礎(chǔ)知識及其兩個參數(shù),已經(jīng)可以看到它如何使我們能夠更快地創(chuàng)建Customizer控件而又不影響性能。

當您接觸Kirki時,您會很快發(fā)現(xiàn)它在Customize API之上添加的豐富功能。毫不奇怪,它已在超過400,000個網(wǎng)站上使用,并且是市場上一些最大的WordPress主題的核心部分。

聲明:本站所有文章,如無特殊說明或標注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號 WPDAXUE
WordPress開發(fā)

如何使用WordPress 函數(shù)向遠程api發(fā)出Get和Post請求

2020-3-1 9:56:42

WordPress開發(fā)

為什么要開發(fā)WordPress免費主題和插件?

2020-3-13 9:52:19

3 條回復(fù) A文章作者 M管理員
  1. 云點建站

    牛了,核心都開始搞定制了

?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

左贡县| 河津市| 荔波县| 巴青县| 三门县| 平邑县| 夏邑县| 广宁县| 隆昌县| 师宗县| 泽库县| 康保县| 保定市| 灵丘县| 安新县| 敦化市| 定陶县| 金溪县| 横峰县| 通州市| 连江县| 六安市| 娱乐| 久治县| 定西市| 班玛县| 双流县| 黄梅县| 方山县| 沽源县| 长寿区| 仙桃市| 晋州市| 米林县| 郴州市| 政和县| 靖远县| 钦州市| 无棣县| 刚察县| 北海市|