亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
>關(guān)鍵步驟包括設(shè)置目錄結(jié)構(gòu),創(chuàng)建類文件,並實(shí)現(xiàn)用於添加和顯示自定義內(nèi)容類型和元框的功能。
為什麼對(duì)象方向是個(gè)好主意?
>這樣的好處是,如果您編寫(xiě)足夠好的課程,則應(yīng)該可以在以後重複使用它們,並且只需執(zhí)行輕微的自定義。
>所有這些都是從姓名之前的雙重下劃線開(kāi)始的,可以選擇包含在任何類定義中。最好理解所有魔術(shù)功能是另一個(gè)討論(這是有關(guān)魔術(shù)功能和常數(shù)的另一篇文章)。
> set_directory_value()
>我們首先檢查了我們?cè)谠蛑刑砑拥膎once並驗(yàn)證其真實(shí)性。之後,我們檢查我們是否正在執(zhí)行AutoSave,並且用戶可以實(shí)際編輯此頁(yè)面。如果所有這些檢查都通過(guò)了,我們向前邁進(jìn)。
> event_showcase_public_styles.css
> event_showcase_admin_scripts.js
>在操作中完成的功能!
>您可能想從我的GitHub頁(yè)面下載此示例的來(lái)源,然後更改它適合即將到來(lái)的項(xiàng)目或擴(kuò)展其以提供其他功能。
>面向?qū)ο蟮木幊膛cWordPress中的程序編程有何不同?

> WordPress對(duì)象Cache是??一個(gè)改進(jìn)WordPress的系統(tǒng)通過(guò)將數(shù)據(jù)庫(kù)中的數(shù)據(jù)存儲(chǔ)在內(nèi)存中,以防止不必要的查詢。這可以大大加快WordPress的速度,因?yàn)樗鼫p少了數(shù)據(jù)庫(kù)上的負(fù)載。

>

首頁(yè) CMS教程 &#&按 WordPress以對(duì)象為導(dǎo)向的開(kāi)發(fā)

WordPress以對(duì)象為導(dǎo)向的開(kāi)發(fā)

Feb 16, 2025 am 10:26 AM

WordPress以對(duì)象為導(dǎo)向的開(kāi)發(fā)

>以對(duì)象為導(dǎo)向的代碼無(wú)處不在,WordPress也不例外。

WordPress的核心構(gòu)建在用於控制所有內(nèi)容的一系列對(duì)象/類上 在本教程中,我們將研究面向?qū)ο蟮脑O(shè)計(jì),以及如何在為WordPress開(kāi)發(fā)時(shí)如何在實(shí)際應(yīng)用中使用這些設(shè)計(jì),包括:

準(zhǔn)確地了解哪種面向?qū)ο蟮脑O(shè)計(jì)是。

>
    討論為什麼我們應(yīng)該使用面向?qū)ο蟮脑O(shè)計(jì)。
  • >檢查一個(gè)真實(shí)的示例以展示如何工作。
  • >注意1:另請(qǐng)注意,該教程主要概述了以WordPress為中心的概念,因此,如果您是面向?qū)ο蟮脑O(shè)計(jì)的全部新概念,則可能應(yīng)該通過(guò)PHP參考指南快速概述OO。
  • >注2:如果您渴望立即下載所有內(nèi)容,請(qǐng)隨時(shí)從我的github存儲(chǔ)庫(kù)下載源並與教程一起關(guān)注。
讓我們直接跳入它!

>

鑰匙要點(diǎn)

WordPress組中的面向?qū)ο蟮脑O(shè)計(jì)(OOD)相關(guān)的功能和信息中的信息,增強(qiáng)代碼組織和維護(hù)。

> OOD提供了諸如通過(guò)封裝,通過(guò)繼承的可伸縮性和模塊化的更好的組織提供好處,以便於代碼重複使用和管理。

>教程提供了在WordPress中創(chuàng)建自定義事件展示的一個(gè)實(shí)踐示例,證明了OOD原理的實(shí)現(xiàn)。 示例中的

>關(guān)鍵步驟包括設(shè)置目錄結(jié)構(gòu),創(chuàng)建類文件,並實(shí)現(xiàn)用於添加和顯示自定義內(nèi)容類型和元框的功能。

該指南強(qiáng)調(diào)了OOD比程序編程的優(yōu)勢(shì),強(qiáng)調(diào)組織,可伸縮性和模塊化。
  • >教程以行動(dòng)呼籲從GitHub下載源代碼,鼓勵(lì)讀者在其WordPress開(kāi)發(fā)項(xiàng)目中應(yīng)用所示的OOD概念。
  • 無(wú)論如何,什麼是面向?qū)ο蟮脑O(shè)計(jì)?
  • >
  • >對(duì)象方向設(shè)計(jì)(OO設(shè)計(jì))是解決問(wèn)題的不同方法,與傳統(tǒng)的程序方法分開(kāi)。
  • >使用對(duì)象設(shè)計(jì)的設(shè)計(jì),您可以創(chuàng)建一個(gè)結(jié)構(gòu)(類),該結(jié)構(gòu)(類)將將所有相關(guān)功能(方法)和信息(屬性)組合在一起以解決問(wèn)題。
  • >
  • 這與您創(chuàng)建函數(shù)和變量以解決問(wèn)題的過(guò)程開(kāi)發(fā)不同,但是,這些元素可以分離出多個(gè)文件,重新播出並經(jīng)常與之相關(guān)。 簡(jiǎn)而言之,對(duì)象的設(shè)計(jì)是將相關(guān)功能匯總到一個(gè)位置,以便可以從單個(gè)位置維護(hù),擴(kuò)展和使用。

    為什麼對(duì)象方向是個(gè)好主意?

    >

    由於程序代碼運(yùn)行良好,因此您可能想知道以對(duì)象為導(dǎo)向的方法開(kāi)發(fā)的意義是什麼?

    >

    雖然程序設(shè)計(jì)沒(méi)有“錯(cuò)誤”,但以更面向?qū)ο蟮臉邮介_(kāi)發(fā)有幾個(gè)好處。

    >組織

    >使用對(duì)象導(dǎo)向方法時(shí),通常會(huì)更好地組織代碼。創(chuàng)建類意味著解決問(wèn)題的功能都在文件中(與程序開(kāi)發(fā)不同,您可能擁有函數(shù)和變量到處都有)。

    將所有代碼都放在一個(gè)地方可以幫助您保持井井有條,並協(xié)助其他可能會(huì)出現(xiàn)並需要了解您的系統(tǒng)的開(kāi)發(fā)人員。

    >

    >沒(méi)有什麼比撿起一個(gè)項(xiàng)目並不得不四處尋找的函數(shù)和變量更糟糕的是,這些功能和變量用於創(chuàng)建網(wǎng)站的各種元素(由於未知原因而始終分佈在多個(gè)文件上) 。

    >

    可伸縮性

    >以對(duì)象為導(dǎo)向的方法求解問(wèn)題時(shí),您可以創(chuàng)建類。

    >

    可以通過(guò)使用繼承擴(kuò)展這些類來(lái)擴(kuò)展或縮放這些類。繼承將使您基於另一個(gè)類創(chuàng)建一個(gè)類,該類可訪問(wèn)其所有屬性和方法。

    >您可以擴(kuò)展一類以執(zhí)行其他功能,甚至可以覆蓋其方法和屬性以迎合這種情況。

    >使用程序代碼,您要么需要重構(gòu)代碼的一部分,要么完全創(chuàng)建新代碼以處理其他情況。 >

    模塊化

    對(duì)象設(shè)計(jì)的目的是封裝所有功能,以將情況求解到類中。

    >由於解決問(wèn)題的所有代碼都在類內(nèi)部,並且該類通常在其自己的PHP文件中,因此您可以將整個(gè)文件放在另一個(gè)位置,因此它本質(zhì)上是模塊化的。

    >這樣的好處是,如果您編寫(xiě)足夠好的課程,則應(yīng)該可以在以後重複使用它們,並且只需執(zhí)行輕微的自定義。

    >

    >您可以復(fù)制和粘貼程序代碼,但通常情況不太井井有條,您可能必須瀏覽幾個(gè)文件以確保您擁有所需的功能。 >

    示例場(chǎng)景 - 創(chuàng)建一個(gè)簡(jiǎn)單的事件展示櫃

    在這種情況下,我們的客戶希望在其網(wǎng)站上可以創(chuàng)建和管理事件的位置。這些活動(dòng)將用於促進(jìn)即將到來(lái)的瑣事之夜,賓果遊戲和其他有趣的活動(dòng)。

    >第一步是分解所需的功能,以便我們可以計(jì)劃解決方案(在這裡進(jìn)行良好的計(jì)劃將有助於我們以對(duì)象為導(dǎo)向的方法進(jìn)行)。在我們的情況下,我們可以看到以下一組任務(wù):

    • 創(chuàng)建一種自定義內(nèi)容類型來(lái)管理這些“事件”。
    • 添加其他元框來(lái)處理其他信息處理。
    • >
    • 保存其他元信息。
    • 顯示我們的“事件”的元信息。

    我們可以創(chuàng)建一個(gè)插件,也可以編輯子主題以提供此功能。 > 在這種情況下,我們將在文件內(nèi)部創(chuàng)建我們的功能,然後將其包含在兒童主題中。我選擇了這種方法,因?yàn)槲覀儗⒁庉嬛黝}模板,以便我們輸出其他事件信息。

    >設(shè)置您的目錄並創(chuàng)建文件

    因?yàn)槲覀兿M袃?nèi)容都可以容易地管理和模塊化,所以讓我們從“孩子主題”內(nèi)部設(shè)置文件夾結(jié)構(gòu)開(kāi)始。

    >組織所有內(nèi)容的簡(jiǎn)便方法是創(chuàng)建孩子主題中的包含目錄。該目錄將包含您的主題包含/實(shí)施的其他代碼或功能(您可以隨意調(diào)用此功能,目的是在主題中擁有一個(gè)單一目錄)。

    在此目錄中,我們應(yīng)該製作另一個(gè)文件夾,這次稱為event_showcase。在此文件夾中,我們將在此情況下放置所有適用的文件。 我們還需要一個(gè)JS和一個(gè)CSS文件夾。

    >將功能組織到文件夾中將意味著您可以更輕鬆地查看哪些模塊 /功能您的主題工具。例如,您可能需要為主題實(shí)現(xiàn)另一組功能,您可以添加一個(gè)新文件夾,從邏輯上講,所有內(nèi)容都整齊地組織了。

    >讓我們?yōu)槲覀兊氖纠齽?chuàng)建文件,然後將它們移至正確的目錄

    >

    > event_showcase_class.php

    > event_showcase_admin_styles.css

      > event_showcase_admin_scripts.js
    • > event_showcase_public_styles.css
    • > event_showcase_public_scripts.js
    • 您應(yīng)該有類似於以下類似的東西:
    • >以後您需要下載並將jQuery Time Picker腳本和樣式放置在此目錄中。不用擔(dān)心這個(gè)。
    >

    >將文件加載到WordPress

    WordPress以對(duì)象為導(dǎo)向的開(kāi)發(fā)>在設(shè)置文件時(shí),我們現(xiàn)在需要將它們包括在我們的孩子主題中。 >

    >打開(kāi)您的孩子主題的函數(shù)。 php,並將以下代碼放在頂部或底部

    >

    >這將加載主類文件,該文件將概述我們的功能。在此類課程中,我們將處理腳本和樣式的重新設(shè)計(jì)以及其他元素。

    創(chuàng)建類概述

    >我們的類文件稱為event_showcase_class.php將包含用於我們的事件系統(tǒng)的大多數(shù)功能;因此,最好繪製出我們需要進(jìn)行這項(xiàng)工作需要的方法和屬性的基本概述。

    >
    <span>//Theme functions for child theme
    </span>
    <span>//load our event showcase class
    </span><span>$event_showcase = get_stylesheet_directory() . '/includes/event_showcase/event_showcase_class.php';
    </span><span>include($event_showcase);</span>
    >將以下代碼複製到您的類文件中。

    <span>//Theme functions for child theme
    </span>
    <span>//load our event showcase class
    </span><span>$event_showcase = get_stylesheet_directory() . '/includes/event_showcase/event_showcase_class.php';
    </span><span>include($event_showcase);</span>

    >讓我們通過(guò)方法和屬性運(yùn)行,以便我們可以理解過(guò)程流程:>

      >變量 - 我們聲明一些變量以使類更模塊化(因此我們可以復(fù)制此文件並更改一些屬性,並且類將處理其他更改)。
    • __ construct() - 我們所有的鉤子,過(guò)濾器和初始化代碼都將進(jìn)入此處。
    • >
    • set_directory_value() - 定義我們的目錄屬性,該屬性將使我們輕鬆地插入我們?cè)贑SS或JS目錄中放置的文件。
    • > > > enqueue_public_scripts_and_styles() - 加載我們的公共面向腳本和樣式。
    • > enqueue_admin_scripts_and_styles() - 加載管理腳本和樣式。
    • add_content_type() - 定義我們正在創(chuàng)建的新內(nèi)容類型。
    • >
    • add_meta_boxes_for_content_type() - 為我們的新內(nèi)容類型添加元框。
    • display_function_for_content_type_meta_box - 構(gòu)建內(nèi)容類型的後端管理接口,因此我們可以保存額外的信息。
    • >
    • > save_custom_content_type($ post_id) - 處理自定義內(nèi)容類型的保存(和我們的元信息)。
    • display_additional_meta_data() - 在前端顯示保存的元信息。
    • >讓我們現(xiàn)在瀏覽一下,更新這些元素並概述代碼
    • >
    類屬性

    >我們?cè)陬惖捻敳柯暶髁艘恍⑼ㄟ^(guò)我們的方法引用的屬性。這些目的是使它們更容易重新置換此類並在將來(lái)更改其功能。

    __ construct()

    <span>/*
    </span><span> * Event Showcase
    </span><span> * Creates an 'event' content type to showcase upcoming functions and information
    </span><span> * Uses hooks and filters inside your theme to output relevant information
    </span><span> */
    </span> 
     <span>class event_showcase{
    </span> 	
    	<span>//variables
    </span>	<span>private $directory = '';
    </span>	<span>private $singular_name = 'event';
    </span>	<span>private $plural_name = 'events';
    </span>	<span>private $content_type_name = 'event_showcase';
    </span>	
    	<span>//magic function, called on creation
    </span>	<span>public function __construct(){}
    </span>	<span>//sets the directory (path) so that we can use this for our enqueuing
    </span>	<span>public function set_directory_value(){}
    </span>	<span>//check if we need to flush rewrite rules
    </span>	<span>public function check_flush_rewrite_rules(){}
    </span>	<span>//enqueue public scripts and styles
    </span>	<span>public function enqueue_public_scripts_and_styles(){}
    </span>	<span>//enqueue admin scripts and styles
    </span>	<span>public function enqueue_admin_scripts_and_styles(){}
    </span>	<span>//adding our new content type
    </span>	<span>public function add_content_type(){}
    </span>	<span>//adding meta box to save additional meta data for the content type
    </span>	<span>public function add_meta_boxes_for_content_type(){}
    </span>	<span>//displays the visual output of the meta box in admin (where we will save our meta data)
    </span>	<span>public function display_function_for_content_type_meta_box($post){}
    </span>	<span>//when saving the custom content type, save additional meta data
    </span>	<span>public function save_custom_content_type($post_id){}
    </span>	<span>//display additional meta information for the content type
    </span>	<span>//@hooked using 'display_additional_meta_data' in theme
    </span>	<span>function display_additional_meta_data(){}
    </span> <span>}
    </span> 
     <span>//create new object 
    </span> <span>$event_showcase = new event_showcase;</span>
    我們的__ -construct函數(shù)是一個(gè)魔術(shù)函數(shù)。這些功能是類的特殊PHP5功能,可以訪問(wèn)執(zhí)行特定操作的特定功能。

    >所有這些都是從姓名之前的雙重下劃線開(kāi)始的,可以選擇包含在任何類定義中。最好理解所有魔術(shù)功能是另一個(gè)討論(這是有關(guān)魔術(shù)功能和常數(shù)的另一篇文章)。

    >。

    > __ -construct函數(shù)一旦初始化了類,因此它是第一個(gè)將觸發(fā)的函數(shù)。在這裡,我們正在添加所有掛鉤,過(guò)濾器和啟動(dòng)邏輯。 使用以下代碼更新基本輪廓。

    >您可能會(huì)認(rèn)為add_action看起來(lái)與您以前看到的東西有點(diǎn)不同,並且您正確。

    >

    使用add_action和Add_filter在類中使用時(shí),您必須在數(shù)組中提供第二個(gè)參數(shù)。數(shù)組的第一個(gè)值是$此變量(意味著類本身),第二個(gè)是將要使用的函數(shù)的名稱(用引號(hào)包裝)。
    <span>//variables
    </span><span>private $directory = '';	
    </span><span>private $singular_name = 'event';
    </span><span>private $plural_name = 'events';
    </span><span>private $content_type_name = 'event_showcase';</span>
    >

    有關(guān)更多信息,請(qǐng)查看WordPress codex上的add_action函數(shù)的類腳註。

    > set_directory_value()

    >由於我們將啟用CSS和JS,因此將文件目錄URL存儲(chǔ)到可以訪問(wèn)的變量中是有意義的。我們的目錄結(jié)構(gòu)是 /包括 /event_showcase,但是可以自定義以適合您的結(jié)構(gòu)。 >

    <span>//Theme functions for child theme
    </span>
    <span>//load our event showcase class
    </span><span>$event_showcase = get_stylesheet_directory() . '/includes/event_showcase/event_showcase_class.php';
    </span><span>include($event_showcase);</span>
    check_flush_rewrite_rules()

    >由於我們添加了一種自定義內(nèi)容類型,需要處理漂亮的永久鏈接;這些永久鏈接是重寫(xiě),使您的頁(yè)面URL看起來(lái)不那麼醜陋(而不是讓http://mywebsite.com .au/?p=123您可以擁有http://mywebsite.com.au/my-event) >

    重寫(xiě)可確保您的內(nèi)容類型轉(zhuǎn)換為漂亮的格式,但是,此重寫(xiě)很昂貴,並且如果過(guò)度完成,則可以減慢您的網(wǎng)站。因?yàn)橹貙?xiě)可能會(huì)影響您的網(wǎng)站,因此通常僅在主題/插件激活或停用的情況下更改。

    >

    >由於您可能不想手動(dòng)更新固定鏈接,因此此功能要求WordPress自動(dòng)進(jìn)行,並且僅一次(添加了新的內(nèi)容類型之後)。

    >此功能將檢查是否需要通過(guò)主題選項(xiàng)刷新網(wǎng)站。如果需要沖洗,則將更新永久鏈接,然後將選項(xiàng)的值設(shè)置為false(因此它僅觸發(fā)一次,而不是每次加載頁(yè)面)。

    enqueue_public_scripts_and_styles()

    此功能處理前端網(wǎng)站的腳本和樣式的起點(diǎn)。
    <span>/*
    </span><span> * Event Showcase
    </span><span> * Creates an 'event' content type to showcase upcoming functions and information
    </span><span> * Uses hooks and filters inside your theme to output relevant information
    </span><span> */
    </span> 
     <span>class event_showcase{
    </span> 	
    	<span>//variables
    </span>	<span>private $directory = '';
    </span>	<span>private $singular_name = 'event';
    </span>	<span>private $plural_name = 'events';
    </span>	<span>private $content_type_name = 'event_showcase';
    </span>	
    	<span>//magic function, called on creation
    </span>	<span>public function __construct(){}
    </span>	<span>//sets the directory (path) so that we can use this for our enqueuing
    </span>	<span>public function set_directory_value(){}
    </span>	<span>//check if we need to flush rewrite rules
    </span>	<span>public function check_flush_rewrite_rules(){}
    </span>	<span>//enqueue public scripts and styles
    </span>	<span>public function enqueue_public_scripts_and_styles(){}
    </span>	<span>//enqueue admin scripts and styles
    </span>	<span>public function enqueue_admin_scripts_and_styles(){}
    </span>	<span>//adding our new content type
    </span>	<span>public function add_content_type(){}
    </span>	<span>//adding meta box to save additional meta data for the content type
    </span>	<span>public function add_meta_boxes_for_content_type(){}
    </span>	<span>//displays the visual output of the meta box in admin (where we will save our meta data)
    </span>	<span>public function display_function_for_content_type_meta_box($post){}
    </span>	<span>//when saving the custom content type, save additional meta data
    </span>	<span>public function save_custom_content_type($post_id){}
    </span>	<span>//display additional meta information for the content type
    </span>	<span>//@hooked using 'display_additional_meta_data' in theme
    </span>	<span>function display_additional_meta_data(){}
    </span> <span>}
    </span> 
     <span>//create new object 
    </span> <span>$event_showcase = new event_showcase;</span>

    我們?cè)诤艚姓{(diào)用中使用內(nèi)容類型的名稱,以便不應(yīng)該與其他插件發(fā)生任何命名衝突(因?yàn)樗鼘⑥D(zhuǎn)化為唯一的東西,即event_showcase_public_scripts`)。

    我們將wp_enqueue_style和wp_enqueue_script都稱為加載我們的資源。 >

    加載資源時(shí),我們還使用$目錄和$ content_type_name屬性。

    enqueue_admin_scripts_and_styles()

    此功能處理管理員後端網(wǎng)站的腳本和樣式的起點(diǎn)。

    >我們檢查我們是否在我們的內(nèi)容類型的編輯屏幕或新屏幕上,並且僅在我們的情況下繼續(xù)進(jìn)行(當(dāng)我們不在正確的頁(yè)面上時(shí)不需要加載資源)。 ??
    <span>//variables
    </span><span>private $directory = '';	
    </span><span>private $singular_name = 'event';
    </span><span>private $plural_name = 'events';
    </span><span>private $content_type_name = 'event_showcase';</span>

    我們將WP_ENQUEUE_STYLE和WP_ENQUEUE_SCRIPT稱為加載我們的資源,基本上與我們的公共面向功能相同。

    在此示例中,我既使用jQuery UI DatePicker(jQuery UI庫(kù)的一部分)和JQuery UI Time Picker(構(gòu)建的樣式與日期選擇器具有類似的樣式)。

    >

    go從上面的鏈接下載時(shí)間選擇器庫(kù),並在您的目錄中包含相關(guān)的CSS和JS文件。

    add_content_type()

    我們?cè)诖斯δ苤新暶魑覀兊淖远x內(nèi)容類型。

    >該函數(shù)使用$ singular_name,$ plural_name和$ content_type_nameproperties來(lái)使此新帖子類型的註冊(cè)輕鬆。

    >

    >這樣的構(gòu)造註冊(cè)函數(shù),這意味著您只需提供幾片信息即可輕鬆更改和註冊(cè)帖子類型。

    >有關(guān)註冊(cè)自定義內(nèi)容類型的更詳細(xì)概述,請(qǐng)查看register_post_type函數(shù)的WordPress codex

    <span>//Theme functions for child theme
    </span>
    <span>//load our event showcase class
    </span><span>$event_showcase = get_stylesheet_directory() . '/includes/event_showcase/event_showcase_class.php';
    </span><span>include($event_showcase);</span>
    >添加了此步驟後,您應(yīng)該看到一個(gè)新項(xiàng)目已添加到後端WordPress菜單中。

    WordPress以對(duì)象為導(dǎo)向的開(kāi)發(fā) add_meta_boxes_for_content_type()

    >我們?cè)诖颂幪砑觾?nèi)容類型所需的元框。我們調(diào)用add_meta_box函數(shù)並提供OUT功能。簡(jiǎn)短的故事是,我們用它來(lái)創(chuàng)建一個(gè)新的管理員框來(lái)保存我們要保存的新表單元素。

    <span>/*
    </span><span> * Event Showcase
    </span><span> * Creates an 'event' content type to showcase upcoming functions and information
    </span><span> * Uses hooks and filters inside your theme to output relevant information
    </span><span> */
    </span> 
     <span>class event_showcase{
    </span> 	
    	<span>//variables
    </span>	<span>private $directory = '';
    </span>	<span>private $singular_name = 'event';
    </span>	<span>private $plural_name = 'events';
    </span>	<span>private $content_type_name = 'event_showcase';
    </span>	
    	<span>//magic function, called on creation
    </span>	<span>public function __construct(){}
    </span>	<span>//sets the directory (path) so that we can use this for our enqueuing
    </span>	<span>public function set_directory_value(){}
    </span>	<span>//check if we need to flush rewrite rules
    </span>	<span>public function check_flush_rewrite_rules(){}
    </span>	<span>//enqueue public scripts and styles
    </span>	<span>public function enqueue_public_scripts_and_styles(){}
    </span>	<span>//enqueue admin scripts and styles
    </span>	<span>public function enqueue_admin_scripts_and_styles(){}
    </span>	<span>//adding our new content type
    </span>	<span>public function add_content_type(){}
    </span>	<span>//adding meta box to save additional meta data for the content type
    </span>	<span>public function add_meta_boxes_for_content_type(){}
    </span>	<span>//displays the visual output of the meta box in admin (where we will save our meta data)
    </span>	<span>public function display_function_for_content_type_meta_box($post){}
    </span>	<span>//when saving the custom content type, save additional meta data
    </span>	<span>public function save_custom_content_type($post_id){}
    </span>	<span>//display additional meta information for the content type
    </span>	<span>//@hooked using 'display_additional_meta_data' in theme
    </span>	<span>function display_additional_meta_data(){}
    </span> <span>}
    </span> 
     <span>//create new object 
    </span> <span>$event_showcase = new event_showcase;</span>
    display_function_for_content_type_meta_box($ post)

    我們使用此功能來(lái)輸出我們內(nèi)容類型的新META信息的後端選項(xiàng)。

    在我們的示例中,我們正在收集有關(guān)將向最終用戶展示的事件的日期,時(shí)間和其他信息。

    我們首先將所有附加的後元元數(shù)據(jù)收集到變量中,並顯示HTML表單的輸出。其中一些字段將觸發(fā)日期選擇器接口,而其他字段會(huì)觸發(fā)時(shí)間選擇器(由元素上使用的類確定)。

    >此外,我們?cè)O(shè)置了一個(gè)nonce字段,以便我們可以在此頁(yè)面上驗(yàn)證保存。

    >

    >完成此步驟後,您應(yīng)該看到新的空元框已轉(zhuǎn)換,現(xiàn)在可以保留我們所有的新信息。

    <span>//variables
    </span><span>private $directory = '';	
    </span><span>private $singular_name = 'event';
    </span><span>private $plural_name = 'events';
    </span><span>private $content_type_name = 'event_showcase';</span>

    > save_custom_content_type($ post_id)WordPress以對(duì)象為導(dǎo)向的開(kāi)發(fā)

    這是我們?yōu)樽远x內(nèi)容類型的其他元數(shù)據(jù)保存的地方。 >

    >我們首先檢查了我們?cè)谠蛑刑砑拥膎once並驗(yàn)證其真實(shí)性。之後,我們檢查我們是否正在執(zhí)行AutoSave,並且用戶可以實(shí)際編輯此頁(yè)面。如果所有這些檢查都通過(guò)了,我們向前邁進(jìn)。

    >

    >我們將所有值收集到變量中,並使用Sanitize_text_field函數(shù)對(duì)它們進(jìn)行消毒。之後,我們調(diào)用update_post_meta函數(shù)以保存我們的數(shù)據(jù)。

    >

    此功能顯示我們新內(nèi)容類型的單個(gè)帖子的保存元信息(單個(gè)事件)。

    我們定義了一個(gè)新的動(dòng)作,稱為display_content_type_meta在我們的__construct函數(shù)中,這是它的外觀:
    <span>//magic function, called on creation
    </span><span>public function __construct(){
    </span>	
    	<span>$this->set_directory_value(); //set the directory url on creation
    </span>	<span>add_action('init', array($this,'add_content_type')); //add content type
    </span>	<span>add_action('init', array($this,'check_flush_rewrite_rules')); //flush re-write rules for permalinks (because of content type)
    </span>	<span>add_action('add_meta_boxes', array($this,'add_meta_boxes_for_content_type')); //add meta boxes 
    </span>	<span>add_action('wp_enqueue_scripts', array($this,'enqueue_public_scripts_and_styles')); //enqueue public facing elements
    </span>	<span>add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts_and_styles')); //enqueues admin elements
    </span>	<span>add_action('save_post_' . $this->content_type_name, array($this,'save_custom_content_type')); //handles saving of content type meta info
    </span>	<span>add_action('display_content_type_meta', array($this,'display_additional_meta_data')); //displays the saved content type meta info	
    </span><span>}</span>

    這個(gè)操作的第二個(gè)值稱為display_additional_meta_data,與此功能相對(duì)應(yīng)。這意味著任何時(shí)候有人調(diào)用do_action('display_content_type_meta');它將調(diào)用此函數(shù)並顯示新的帖子元信息。

    >

    >您可以調(diào)用do_action('display_content_type_meta');從主題內(nèi)的任何地方(只要您在此內(nèi)容類型的單個(gè)帖子上),它將顯示元信息。

    >

    >我正在使用二十三十三個(gè)父母主題,所以我正在掛接我的顯示器主題的content.php。

    此功能將獲得全局$ post和$ post_type,並檢查當(dāng)前的項(xiàng)目是否是我們的新內(nèi)容類型。 >

    之後

    其他文件,CSS和JS

    <span>//Theme functions for child theme
    </span>
    <span>//load our event showcase class
    </span><span>$event_showcase = get_stylesheet_directory() . '/includes/event_showcase/event_showcase_class.php';
    </span><span>include($event_showcase);</span>
    現(xiàn)在,大部分功能已經(jīng)完成,讓我們將其交換到我們的CSS和JS文件中以快速添加一些樣式和交互性。

    >

    > event_showcase_admin_styles.css

    > event_showcase_public_styles.css

    <span>/*
    </span><span> * Event Showcase
    </span><span> * Creates an 'event' content type to showcase upcoming functions and information
    </span><span> * Uses hooks and filters inside your theme to output relevant information
    </span><span> */
    </span> 
     <span>class event_showcase{
    </span> 	
    	<span>//variables
    </span>	<span>private $directory = '';
    </span>	<span>private $singular_name = 'event';
    </span>	<span>private $plural_name = 'events';
    </span>	<span>private $content_type_name = 'event_showcase';
    </span>	
    	<span>//magic function, called on creation
    </span>	<span>public function __construct(){}
    </span>	<span>//sets the directory (path) so that we can use this for our enqueuing
    </span>	<span>public function set_directory_value(){}
    </span>	<span>//check if we need to flush rewrite rules
    </span>	<span>public function check_flush_rewrite_rules(){}
    </span>	<span>//enqueue public scripts and styles
    </span>	<span>public function enqueue_public_scripts_and_styles(){}
    </span>	<span>//enqueue admin scripts and styles
    </span>	<span>public function enqueue_admin_scripts_and_styles(){}
    </span>	<span>//adding our new content type
    </span>	<span>public function add_content_type(){}
    </span>	<span>//adding meta box to save additional meta data for the content type
    </span>	<span>public function add_meta_boxes_for_content_type(){}
    </span>	<span>//displays the visual output of the meta box in admin (where we will save our meta data)
    </span>	<span>public function display_function_for_content_type_meta_box($post){}
    </span>	<span>//when saving the custom content type, save additional meta data
    </span>	<span>public function save_custom_content_type($post_id){}
    </span>	<span>//display additional meta information for the content type
    </span>	<span>//@hooked using 'display_additional_meta_data' in theme
    </span>	<span>function display_additional_meta_data(){}
    </span> <span>}
    </span> 
     <span>//create new object 
    </span> <span>$event_showcase = new event_showcase;</span>

    > event_showcase_admin_scripts.js

    <span>//variables
    </span><span>private $directory = '';	
    </span><span>private $singular_name = 'event';
    </span><span>private $plural_name = 'events';
    </span><span>private $content_type_name = 'event_showcase';</span>

    >在操作中完成的功能!

    >
    <span>//magic function, called on creation
    </span><span>public function __construct(){
    </span>	
    	<span>$this->set_directory_value(); //set the directory url on creation
    </span>	<span>add_action('init', array($this,'add_content_type')); //add content type
    </span>	<span>add_action('init', array($this,'check_flush_rewrite_rules')); //flush re-write rules for permalinks (because of content type)
    </span>	<span>add_action('add_meta_boxes', array($this,'add_meta_boxes_for_content_type')); //add meta boxes 
    </span>	<span>add_action('wp_enqueue_scripts', array($this,'enqueue_public_scripts_and_styles')); //enqueue public facing elements
    </span>	<span>add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts_and_styles')); //enqueues admin elements
    </span>	<span>add_action('save_post_' . $this->content_type_name, array($this,'save_custom_content_type')); //handles saving of content type meta info
    </span>	<span>add_action('display_content_type_meta', array($this,'display_additional_meta_data')); //displays the saved content type meta info	
    </span><span>}</span>
    >所有內(nèi)容都拼湊在一起時(shí),您應(yīng)該能夠使用其他元數(shù)據(jù)創(chuàng)建一個(gè)新的“事件”。當(dāng)您查看活動(dòng)時(shí),您應(yīng)該在下面看到我的樣本

    >

    您可以看到其他字幕,日期,時(shí)間和票務(wù)數(shù)據(jù)。

    >擴(kuò)展基本的帖子類型並添加額外的元素有助於創(chuàng)建一個(gè)更具互動(dòng)性和簡(jiǎn)單的網(wǎng)站來(lái)管理。用戶不再需要通過(guò)內(nèi)容區(qū)域添加所有這些信息,而這些信息可能會(huì)混亂,難以使用和不一致。他們現(xiàn)在有一個(gè)易於管理界面的簡(jiǎn)單。 WordPress以對(duì)象為導(dǎo)向的開(kāi)發(fā)>

    從這裡到哪裡?

    >

    >現(xiàn)在您已經(jīng)看到了一個(gè)實(shí)用的對(duì)象設(shè)計(jì)的實(shí)踐示例,以及增強(qiáng)開(kāi)發(fā)的容易,您可以運(yùn)用這些技能並構(gòu)建更好的主題和插件。

    >

    >您可能想從我的GitHub頁(yè)面下載此示例的來(lái)源,然後更改它適合即將到來(lái)的項(xiàng)目或擴(kuò)展其以提供其他功能。

    希望本文將幫助您計(jì)劃開(kāi)發(fā),並查看面向?qū)ο蟮姆椒ㄈ绾喂?jié)省您的時(shí)間和精力。 >

    經(jīng)常詢問(wèn)有關(guān)以對(duì)象為導(dǎo)向的開(kāi)發(fā)的問(wèn)題

    > WordPress中的面向?qū)ο蟮木幊蹋∣OP)是什麼?這些對(duì)像用於相互交互以設(shè)計(jì)應(yīng)用程序和軟件。 WordPress中的OOP是有益的,因?yàn)樗鼮槌绦蛱峁┝艘粋€(gè)清晰的模塊化結(jié)構(gòu),這使其適合定義隱藏實(shí)現(xiàn)詳細(xì)信息並且單元具有明確定義的接口的抽像數(shù)據(jù)類型。

    >面向?qū)ο蟮木幊膛cWordPress中的程序編程有何不同?

    > WordPress對(duì)象Cache是??一個(gè)改進(jìn)WordPress的系統(tǒng)通過(guò)將數(shù)據(jù)庫(kù)中的數(shù)據(jù)存儲(chǔ)在內(nèi)存中,以防止不必要的查詢。這可以大大加快WordPress的速度,因?yàn)樗鼫p少了數(shù)據(jù)庫(kù)上的負(fù)載。

    >

    >如何在WordPress中的盒子中刪除OBJ?

    以在WordPress中的盒子中刪除OBJ,您可以使用各種方法,例如使用插件禁用對(duì)象緩存或從代碼中手動(dòng)將其刪除。但是,重要的是要注意,應(yīng)該仔細(xì)地進(jìn)行此操作,以避免打破您的網(wǎng)站。

    >我如何在我的WordPress主題中實(shí)現(xiàn)面向?qū)ο蟮木幊蹋?

    >在WordPress中使用面向?qū)ο蟮木幊逃惺颤N好處? WordPress中的編程提供了一些好處。它使代碼更緊湊,易於理解和更易於維護(hù)。它還可以通過(guò)更少的代碼創(chuàng)建更複雜的功能。此外,它允許進(jìn)行更好的數(shù)據(jù)分析,更準(zhǔn)確的編碼和更快的開(kāi)發(fā)。

    >在帖子標(biāo)題中出現(xiàn)的'obj'在wordpress中含義是什麼?在WordPress中的帖子標(biāo)題中,通常是與插件或主題發(fā)生衝突的結(jié)果。它不是WordPress的標(biāo)準(zhǔn)部分,可以通過(guò)識(shí)別和解決衝突來(lái)刪除它。

    >

    >我如何學(xué)習(xí)以wordpress為導(dǎo)向的對(duì)象編程? WordPress面向?qū)ο蟮木幊?。這包括在線教程,課程和書(shū)籍。您還可以通過(guò)檢查WordPress核心代碼來(lái)學(xué)習(xí),因?yàn)樗鞘褂肙OP原理編寫(xiě)的。

    是wordpress開(kāi)發(fā)所需的面向?qū)ο蟮木幊虇幔?

    > > > > > >

    並不是嚴(yán)格地面向?qū)ο蟮木幊獭?qiáng)烈建議使用WordPress開(kāi)發(fā)。使用OOP原則可以幫助您的代碼更可讀,可重複使用且易於維護(hù)。它還可以幫助您更好地理解WordPress核心代碼。

    >

    >我可以使用WordPress插件使用面向?qū)ο蟮木幊???shí)際上,許多WordPress插件都是使用OOP原理編寫(xiě)的。這允許更複雜的功能,並可以使插件代碼更易於管理和維護(hù)。 >

以上是WordPress以對(duì)象為導(dǎo)向的開(kāi)發(fā)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

Laravel 教程
1597
29
PHP教程
1488
72
如何診斷WordPress引起的高CPU使用 如何診斷WordPress引起的高CPU使用 Jul 06, 2025 am 12:08 AM

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

如何在WordPress中縮小JavaScript文件 如何在WordPress中縮小JavaScript文件 Jul 07, 2025 am 01:11 AM

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

如何以編程方式防止評(píng)論垃圾郵件 如何以編程方式防止評(píng)論垃圾郵件 Jul 08, 2025 am 12:04 AM

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

如何爭(zhēng)取古騰堡大塊的資產(chǎn) 如何爭(zhēng)取古騰堡大塊的資產(chǎn) Jul 09, 2025 am 12:14 AM

在開(kāi)發(fā)Gutenberg塊時(shí),正確enqueue資產(chǎn)的方法包括:1.使用register_block_type指定editor_script、editor_style和style的路徑;2.在functions.php或插件中通過(guò)wp_register_script和wp_register_style註冊(cè)資源,並設(shè)置正確的依賴和版本;3.配置構(gòu)建工具輸出合適的模塊格式,並確保路徑一致;4.通過(guò)add_theme_support或enqueue_block_assets控制前端樣式的加載邏輯,確保

如何向用戶添加自定義字段 如何向用戶添加自定義字段 Jul 06, 2025 am 12:18 AM

要添加自定義用戶字段需根據(jù)平臺(tái)選擇擴(kuò)展方式並註意數(shù)據(jù)驗(yàn)證與權(quán)限控制。常見(jiàn)做法包括:1.利用數(shù)據(jù)庫(kù)額外表或鍵值對(duì)結(jié)構(gòu)存儲(chǔ)信息;2.在前端加入輸入框並與後端集成;3.對(duì)敏感數(shù)據(jù)進(jìn)行格式校驗(yàn)和訪問(wèn)權(quán)限限制;4.更新接口及模板以支持新字段展示與編輯,同時(shí)兼顧移動(dòng)端適配和用戶體驗(yàn)。

如何添加自定義重寫(xiě)規(guī)則 如何添加自定義重寫(xiě)規(guī)則 Jul 08, 2025 am 12:11 AM

在WordPress中添加自定義重寫(xiě)規(guī)則的關(guān)鍵在於使用add_rewrite_rule函數(shù)並確保規(guī)則正確生效。 1.使用add_rewrite_rule註冊(cè)規(guī)則,格式為add_rewrite_rule($regex,$redirect,$after),其中$regex是正則表達(dá)式匹配URL,$redirect指定實(shí)際查詢,$after控制規(guī)則位置;2.需通過(guò)add_filter添加自定義查詢變量;3.修改後必須刷新固定鏈接設(shè)置;4.建議將規(guī)則放在'top'以避免衝突;5.可藉助插件查看當(dāng)前規(guī)則便於

如何優(yōu)化WordPress機(jī)器人TXT 如何優(yōu)化WordPress機(jī)器人TXT Jul 13, 2025 am 12:37 AM

robots.txt對(duì)WordPress網(wǎng)站的SEO至關(guān)重要,能引導(dǎo)搜索引擎抓取行為,避免重複內(nèi)容並提升效率。 1.屏蔽如/wp-admin/、/wp-includes/等系統(tǒng)路徑,但避免誤封/uploads/目錄;2.添加Sitemap路徑如Sitemap:https://yourdomain.com/sitemap.xml以幫助搜索引擎快速發(fā)現(xiàn)站點(diǎn)地圖;3.限制/page/和帶參數(shù)的URL以減少爬蟲(chóng)浪費(fèi),但需注意勿封重要?dú)w檔頁(yè);4.避免常見(jiàn)錯(cuò)誤如誤封全站、緩存插件影響更新及忽略移動(dòng)端與子域名配

如何介紹WordPress性能 如何介紹WordPress性能 Jul 07, 2025 am 12:43 AM

1.使用性能分析插件可快速定位問(wèn)題,如QueryMonitor可查看數(shù)據(jù)庫(kù)查詢次數(shù)與PHP錯(cuò)誤,BlackboxProfiler生成函數(shù)執(zhí)行報(bào)告,NewRelic提供服務(wù)器級(jí)分析;2.分析PHP執(zhí)行性能需檢查耗時(shí)函數(shù)、調(diào)試工具使用及內(nèi)存分配情況,如Xdebug生成火焰圖輔助優(yōu)化;3.監(jiān)控?cái)?shù)據(jù)庫(kù)查詢效率可通過(guò)慢查詢?nèi)照I與索引檢查,QueryMonitor能列出所有SQL並按時(shí)間排序;4.結(jié)合GooglePageSpeedInsights、GTmetrix與WebPageTest等外部工具評(píng)估前端加

See all articles