WordPress網(wǎng)站建設(shè)者或開發(fā)者經(jīng)常會用到元框(Meta Boxes)。本文將深入探討元框與自定義文章類型的關(guān)聯(lián)和集成,以及如何在WordPress前端使用元框中保存的數(shù)據(jù)。
核心要點
- 使用
add_meta_box()
函數(shù)(掛載到add_meta_boxes
動作)可以將元框添加到任何文章類型的編輯界面。此函數(shù)可用于將元框添加到多個文章類型(如文章、頁面和自定義文章類型“書籍”),或添加到所有現(xiàn)有及未來創(chuàng)建的文章類型。 - 通過將文章類型名稱附加到
add_meta_boxes
動作鉤子,可以將元框限制在特定文章類型。register_post_type()
函數(shù)用于自定義文章類型,其參數(shù)數(shù)組包含register_meta_box_cb
,其值為在設(shè)置元框時調(diào)用的回調(diào)函數(shù)。 -
global_notice_meta_box_callback
函數(shù)包含元框的表單字段。save_post
動作鉤子處理在將文章保存為草稿或發(fā)布時保存到文本區(qū)域的數(shù)據(jù)。通過在保存對應(yīng)文章內(nèi)容之前顯示元框輸入的數(shù)據(jù),可以將這些數(shù)據(jù)有效利用。
將元框添加到文章類型屏幕
Narayan Prusty已涵蓋了創(chuàng)建元框的大多數(shù)(如果不是全部)PHP函數(shù)、參數(shù)和動作鉤子。
要將元框添加到任何文章類型的編輯屏幕,可以使用add_meta_box()
函數(shù)并將其掛接到add_meta_boxes
動作。
以下代碼將元框添加到文章編輯屏幕。請注意global_notice_meta_box_callback
函數(shù),該函數(shù)用于顯示元框中的表單字段。稍后我們將詳細介紹。
function global_notice_meta_box() { add_meta_box( 'global-notice', __( '全局公告', 'sitepoint' ), 'global_notice_meta_box_callback', 'post' ); } add_action( 'add_meta_boxes', 'global_notice_meta_box' );
要將元框添加到多個文章類型屏幕(文章、頁面和自定義文章類型“書籍”),請創(chuàng)建一個文章類型數(shù)組,遍歷該數(shù)組,并使用add_meta_box()
將其添加到這些文章類型中。
function global_notice_meta_box() { $screens = array( 'post', 'page', 'book' ); foreach ( $screens as $screen ) { add_meta_box( 'global-notice', __( '全局公告', 'sitepoint' ), 'global_notice_meta_box_callback', $screen ); } } add_action( 'add_meta_boxes', 'global_notice_meta_box' );
要將元框添加到所有現(xiàn)有及未來創(chuàng)建的文章類型,請使用get_post_types()
獲取文章類型數(shù)組,然后用它替換上面的$screen
值。
function global_notice_meta_box() { $screens = get_post_types(); foreach ( $screens as $screen ) { add_meta_box( 'global-notice', __( '全局公告', 'sitepoint' ), 'global_notice_meta_box_callback', $screen ); } } add_action( 'add_meta_boxes', 'global_notice_meta_box' );
也可以通過省略第三個($screen
)參數(shù)來將元框添加到所有現(xiàn)有和新的文章類型:
function global_notice_meta_box() { add_meta_box( 'global-notice', __( '全局公告', 'sitepoint' ), 'global_notice_meta_box_callback' ); } add_action( 'add_meta_boxes', 'global_notice_meta_box' );
還可以通過將文章類型名稱(本例中為“book”)附加到add_meta_boxes
動作鉤子來限制元框到特定文章類型:
function global_notice_meta_box() { add_meta_box( 'global-notice', __( '全局公告', 'sitepoint' ), 'global_notice_meta_box_callback' ); } add_action( 'add_meta_boxes_book', 'global_notice_meta_box' );
register_post_type()
函數(shù)用于自定義文章類型,其參數(shù)數(shù)組中包含register_meta_box_cb
,其值為在設(shè)置元框時調(diào)用的回調(diào)函數(shù)。
假設(shè)我們使用以下代碼創(chuàng)建了一個名為“book”的自定義文章類型:
function global_notice_meta_box() { add_meta_box( 'global-notice', __( '全局公告', 'sitepoint' ), 'global_notice_meta_box_callback', 'post' ); } add_action( 'add_meta_boxes', 'global_notice_meta_box' );
在global_notice_meta_box
PHP 函數(shù)(上面register_meta_box_cb
的值)中添加add_meta_box()
函數(shù)定義將把元框添加到“book”自定義文章類型的編輯屏幕。
再次強調(diào),這是我們的示例global_notice_meta_box
函數(shù)。
function global_notice_meta_box() { $screens = array( 'post', 'page', 'book' ); foreach ( $screens as $screen ) { add_meta_box( 'global-notice', __( '全局公告', 'sitepoint' ), 'global_notice_meta_box_callback', $screen ); } } add_action( 'add_meta_boxes', 'global_notice_meta_box' );
到目前為止,我們已經(jīng)學(xué)習(xí)了在WordPress中注冊或添加元框的各種方法。我們還需要創(chuàng)建global_notice_meta_box_callback
函數(shù),該函數(shù)將包含我們元框的表單字段。
以下是global_notice_meta_box_callback
函數(shù)的代碼,該函數(shù)將在元框中包含一個文本區(qū)域字段。
function global_notice_meta_box() { $screens = get_post_types(); foreach ( $screens as $screen ) { add_meta_box( 'global-notice', __( '全局公告', 'sitepoint' ), 'global_notice_meta_box_callback', $screen ); } } add_action( 'add_meta_boxes', 'global_notice_meta_box' );
save_post
動作鉤子處理在將文章保存為草稿或發(fā)布時保存到文本區(qū)域的數(shù)據(jù)。
function global_notice_meta_box() { add_meta_box( 'global-notice', __( '全局公告', 'sitepoint' ), 'global_notice_meta_box_callback' ); } add_action( 'add_meta_boxes', 'global_notice_meta_box' );
為了使用在元框文本區(qū)域中輸入的數(shù)據(jù),我們將在顯示其保存對應(yīng)文章內(nèi)容之前顯示該數(shù)據(jù)。
function global_notice_meta_box() { add_meta_box( 'global-notice', __( '全局公告', 'sitepoint' ), 'global_notice_meta_box_callback' ); } add_action( 'add_meta_boxes_book', 'global_notice_meta_box' );
代碼解釋
首先,我們創(chuàng)建了一個global_notice_before_post
函數(shù),并將其掛接到the_content
過濾器,該過濾器帶有一個$content
參數(shù),其中包含文章內(nèi)容。
在函數(shù)內(nèi)部,我們包含了全局$post
變量,該變量包含當前正在查看的文章的WP_Post對象。
通過get_post_meta
檢索針對給定文章保存的全局公告,并將其保存到$global_notice
變量中。
然后將公告包裝在一個div中并保存到$notice
變量中。
最后,將包含全局公告的$notice
與包含實際文章內(nèi)容的$content
連接起來。
以下是帶有文章內(nèi)容之前的全局公告的文章屏幕截圖。
總結(jié)
在本教程中,我們學(xué)習(xí)了在WordPress管理屏幕中注冊元框的多種方法,以及如何將它們限制在文章類型中。
我們還回顧了如何向元框添加表單字段,以及如何在保存或發(fā)布文章時保存輸入的數(shù)據(jù)。
最后,我們介紹了如何將輸入到元框中的數(shù)據(jù)付諸實踐。
在未來的文章中,我們將介紹如何向文章類型管理屏幕添加上下文幫助選項卡。
如果您有任何問題或建議,歡迎在評論中提出。
WordPress中向文章類型添加元框的常見問題
-
什么是WordPress中的元框? WordPress中的元框是在管理界面中顯示的可拖動框。這些框用于顯示附加的輸入字段,允許用戶自定義不同類型文章的功能和布局。它們可以添加到文章、頁面和自定義文章類型。元框可以包含各種類型的字段,包括文本、復(fù)選框、選擇選項等等。
-
如何在WordPress中向自定義文章類型添加元框? 要向WordPress中的自定義文章類型添加元框,需要使用
add_meta_box()
函數(shù)。此函數(shù)允許您指定元框ID、標題、回調(diào)函數(shù)、文章類型、上下文和優(yōu)先級。回調(diào)函數(shù)用于輸出元框的內(nèi)容。 -
我能否向單個文章類型添加多個元框? 可以。每個元框都應(yīng)具有唯一的ID,以避免沖突。您可以多次使用
add_meta_box()
函數(shù)并使用不同的參數(shù)來添加多個元框。 -
如何保存輸入到元框字段中的數(shù)據(jù)? 要保存輸入到元框字段中的數(shù)據(jù),需要將一個函數(shù)掛接到
save_post
動作。此函數(shù)應(yīng)檢查nonce,驗證當前用戶的權(quán)限,然后使用update_post_meta()
或add_post_meta()
函數(shù)將元框數(shù)據(jù)保存到數(shù)據(jù)庫。 -
如何在前端顯示元框數(shù)據(jù)? 要在前端顯示元框數(shù)據(jù),可以在循環(huán)中使用
get_post_meta()
函數(shù)。此函數(shù)從數(shù)據(jù)庫檢索元框數(shù)據(jù)并將其作為字符串返回,然后您可以在模板文件中將其輸出。 -
我能否將元框添加到頁面以及文章? 可以。使用
add_meta_box()
函數(shù)時,可以將文章類型指定為“page”以向頁面添加元框。 -
如何從文章類型中刪除元框? 可以使用
remove_meta_box()
函數(shù)。此函數(shù)需要元框ID和文章類型作為參數(shù)。 -
我能否自定義元框在文章編輯屏幕中的位置? 可以。
add_meta_box()
函數(shù)的context
參數(shù)決定了元框的位置??赡艿闹禐椤皀ormal”、“side”和“advanced”。 -
我能否將元框添加到插件創(chuàng)建的自定義文章類型? 可以。您只需要知道自定義文章類型的slug,然后將其用作
add_meta_box()
函數(shù)中的post_type
參數(shù)。 -
如何設(shè)置元框及其字段的樣式? 可以使用CSS設(shè)置元框及其字段的樣式。元框?qū)⒕哂小皃ostbox”類,您可以向元框中的字段添加您自己的類。然后,您可以在CSS中定位這些類以應(yīng)用樣式。
以上是在WordPress中添加元框的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣服圖片

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

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

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

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

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

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

使用Git管理WordPress項目時,應(yīng)只將主題、自定義插件和配置文件納入版本控制;設(shè)置.gitignore文件以忽略上傳目錄、緩存和敏感配置;利用webhook或CI工具實現(xiàn)自動部署并注意數(shù)據(jù)庫處理;采用兩分支策略(main/develop)進行協(xié)作開發(fā)。這樣做可避免沖突、保障安全,并提升協(xié)作與部署效率。

使用WordPress測試環(huán)境是為了確保新功能、插件或主題在正式上線前的安全性和兼容性,避免影響真實網(wǎng)站。搭建測試環(huán)境的步驟包括:下載安裝本地服務(wù)器軟件(如LocalWP、XAMPP),創(chuàng)建站點、設(shè)置數(shù)據(jù)庫和管理員賬號,安裝主題和插件進行測試;復(fù)制正式網(wǎng)站到測試環(huán)境的方法是通過插件導(dǎo)出站點、導(dǎo)入測試環(huán)境并替換域名;使用時應(yīng)注意不使用真實用戶數(shù)據(jù)、定期清理無用數(shù)據(jù)、備份測試狀態(tài)、適時重置環(huán)境,并統(tǒng)一團隊配置以減少差異問題。

創(chuàng)建Gutenberg塊的關(guān)鍵在于理解其基本結(jié)構(gòu)并正確連接前后端資源。1.準備開發(fā)環(huán)境:安裝本地WordPress、Node.js和@wordpress/scripts;2.使用PHP注冊塊并用JavaScript定義塊的編輯和顯示邏輯;3.通過npm構(gòu)建JS文件以使更改生效;4.遇到問題時檢查路徑、圖標是否正確或使用實時監(jiān)聽構(gòu)建避免重復(fù)手動編譯。按照這些步驟,可以逐步實現(xiàn)一個簡單的Gutenberg塊。

在WordPress中,當新增自定義文章類型或修改固定鏈接結(jié)構(gòu)后,需手動刷新重寫規(guī)則,此時可通過代碼調(diào)用flush_rewrite_rules()函數(shù)實現(xiàn)。1.可在主題或插件激活鉤子中添加該函數(shù)以自動刷新;2.僅在必要時執(zhí)行一次,如添加CPT、分類法或修改鏈接結(jié)構(gòu)后;3.避免頻繁調(diào)用以免影響性能;4.多站點環(huán)境下需視情況為每個站點單獨刷新;5.某些托管環(huán)境可能限制規(guī)則保存。此外,訪問“設(shè)置>固定鏈接”頁面點擊保存也可觸發(fā)刷新,適合非自動化場景。

要實現(xiàn)響應(yīng)式WordPress主題設(shè)計,首先要使用HTML5和移動優(yōu)先的Meta標簽,在header.php中添加viewport設(shè)置以確保移動端正確顯示,并用HTML5結(jié)構(gòu)標簽組織布局;其次,利用CSS媒體查詢實現(xiàn)不同屏幕寬度下的樣式適配,按移動優(yōu)先原則編寫樣式,常用斷點包括480px、768px和1024px;第三,彈性處理圖片和布局,為圖片設(shè)置max-width:100%并使用Flexbox或Grid布局替代固定寬度;最后,通過瀏覽器開發(fā)者工具和真實設(shè)備進行充分測試,優(yōu)化加載性能,確保響應(yīng)

tosetupredirectsinwordpressingthe.htaccessfile,locateThEfileInyourSite'sRootDirectorectoryAndDrectRectrulesabovethe#beginWordPresssection.forbasic301redirects,USETHEETHEETERECTREFTATRECTATREDERTREFTATREDERTREFTATRECTRECTATRECTRECTATREDECT301/OLD-PAGEHTTPS:

TOINTEGRATETHIRD-PARTYAPISINTOWORDPRESS,關(guān)注臺詞:1.SelectAutableabepianDobtainCredentialslikeapikeYsoroAuthtoKensByEnterRegisteringThemSecure.2.ChooseBeteBetB??eteBetB??eteBetB??etebetInpliCityOorcustimplicityOrcustomPliCoseTompliCoseTomploomcoseusionfunctionfunctionfunctibunitiacuciencipuity forfunigation。

UsingsMtpForWordPresseMailSimProvesDeliverabilitialComparedComparedTothEdeDefaultPhpMail()函數(shù).1.smtpauthenticateswithyouremailserver.2.somemomehostsdisablesablephpmail()
