目錄
>關鍵步驟包括設置目錄結構,創建類文件,並實現用於添加和顯示自定義內容類型和元框的功能。
為什麼對象方向是個好主意?
>這樣的好處是,如果您編寫足夠好的課程,則應該可以在以後重複使用它們,並且只需執行輕微的自定義。
>所有這些都是從姓名之前的雙重下劃線開始的,可以選擇包含在任何類定義中。最好理解所有魔術功能是另一個討論(這是有關魔術功能和常數的另一篇文章)。
> set_directory_value()
>我們首先檢查了我們在元框中添加的nonce並驗證其真實性。之後,我們檢查我們是否正在執行AutoSave,並且用戶可以實際編輯此頁面。如果所有這些檢查都通過了,我們向前邁進。
> event_showcase_public_styles.css
> event_showcase_admin_scripts.js
>在操作中完成的功能!
>您可能想從我的GitHub頁面下載此示例的來源,然後更改它適合即將到來的項目或擴展其以提供其他功能。
>面向對象的編程與WordPress中的程序編程有何不同?

> WordPress對象Cache是​​一個改進WordPress的系統通過將數據庫中的數據存儲在內存中,以防止不必要的查詢。這可以大大加快WordPress的速度,因為它減少了數據庫上的負載。

>

首頁 CMS教程 &#&按 WordPress以對象為導向的開發

WordPress以對象為導向的開發

Feb 16, 2025 am 10:26 AM

WordPress以對象為導向的開發

>以對象為導向的代碼無處不在,WordPress也不例外。

WordPress的核心構建在用於控制所有內容的一系列對象/類上 在本教程中,我們將研究面向對象的設計,以及如何在為WordPress開發時如何在實際應用中使用這些設計,包括:

準確地了解哪種面向對象的設計是。

>
    討論為什麼我們應該使用面向對象的設計。
  • >檢查一個真實的示例以展示如何工作。
  • >注意1:另請注意,該教程主要概述了以WordPress為中心的概念,因此,如果您是面向對象的設計的全部新概念,則可能應該通過PHP參考指南快速概述OO。
  • >注2:如果您渴望立即下載所有內容,請隨時從我的github存儲庫下載源並與教程一起關注。
讓我們直接跳入它!

>

鑰匙要點

WordPress組中的面向對象的設計(OOD)相關的功能和信息中的信息,增強代碼組織和維護。

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

>教程提供了在WordPress中創建自定義事件展示的一個實踐示例,證明了OOD原理的實現。 示例中的

>關鍵步驟包括設置目錄結構,創建類文件,並實現用於添加和顯示自定義內容類型和元框的功能。

該指南強調了OOD比程序編程的優勢,強調組織,可伸縮性和模塊化。
  • >教程以行動呼籲從GitHub下載源代碼,鼓勵讀者在其WordPress開發項目中應用所示的OOD概念。
  • 無論如何,什麼是面向對象的設計?
  • >
  • >對象方向設計(OO設計)是解決問題的不同方法,與傳統的程序方法分開。
  • >使用對象設計的設計,您可以創建一個結構(類),該結構(類)將將所有相關功能(方法)和信息(屬性)組合在一起以解決問題。
  • >
  • 這與您創建函數和變量以解決問題的過程開發不同,但是,這些元素可以分離出多個文件,重新播出並經常與之相關。 簡而言之,對象的設計是將相關功能匯總到一個位置,以便可以從單個位置維護,擴展和使用。

    為什麼對象方向是個好主意?

    >

    由於程序代碼運行良好,因此您可能想知道以對象為導向的方法開發的意義是什麼?

    >

    雖然程序設計沒有“錯誤”,但以更面向對象的樣式開發有幾個好處。

    >組織

    >使用對象導向方法時,通常會更好地組織代碼。創建類意味著解決問題的功能都在文件中(與程序開發不同,您可能擁有函數和變量到處都有)。

    將所有代碼都放在一個地方可以幫助您保持井井有條,並協助其他可能會出現並需要了解您的系統的開發人員。

    >

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

    >

    可伸縮性

    >以對象為導向的方法求解問題時,您可以創建類。

    >

    可以通過使用繼承擴展這些類來擴展或縮放這些類。繼承將使您基於另一個類創建一個類,該類可訪問其所有屬性和方法。

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

    >使用程序代碼,您要么需要重構代碼的一部分,要么完全創建新代碼以處理其他情況。 >

    模塊化

    對象設計的目的是封裝所有功能,以將情況求解到類中。

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

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

    >

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

    示例場景 - 創建一個簡單的事件展示櫃

    在這種情況下,我們的客戶希望在其網站上可以創建和管理事件的位置。這些活動將用於促進即將到來的瑣事之夜,賓果遊戲和其他有趣的活動。

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

    • 創建一種自定義內容類型來管理這些“事件”。
    • 添加其他元框來處理其他信息處理。
    • >
    • 保存其他元信息。
    • 顯示我們的“事件”的元信息。

    我們可以創建一個插件,也可以編輯子主題以提供此功能。 > 在這種情況下,我們將在文件內部創建我們的功能,然後將其包含在兒童主題中。我選擇了這種方法,因為我們將要編輯主題模板,以便我們輸出其他事件信息。

    >設置您的目錄並創建文件

    因為我們希望所有內容都可以容易地管理和模塊化,所以讓我們從“孩子主題”內部設置文件夾結構開始。

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

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

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

    >讓我們為我們的示例創建文件,然後將它們移至正確的目錄

    >

    > event_showcase_class.php

    > event_showcase_admin_styles.css

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

    >將文件加載到WordPress

    WordPress以對象為導向的開發>在設置文件時,我們現在需要將它們包括在我們的孩子主題中。 >

    >打開您的孩子主題的函數。 php,並將以下代碼放在頂部或底部

    >

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

    創建類概述

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

    >
    <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>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    >讓我們通過方法和屬性運行,以便我們可以理解過程流程:>

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

    >我們在類的頂部聲明了一些將通過我們的方法引用的屬性。這些目的是使它們更容易重新置換此類並在將來更改其功能。

    __ 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函數是一個魔術函數。這些功能是類的特殊PHP5功能,可以訪問執行特定操作的特定功能。

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

    >。

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

    >您可能會認為add_action看起來與您以前看到的東西有點不同,並且您正確。

    >

    使用add_action和Add_filter在類中使用時,您必須在數組中提供第二個參數。數組的第一個值是$此變量(意味著類本身),第二個是將要使用的函數的名稱(用引號包裝)。
    <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>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    >

    有關更多信息,請查看WordPress codex上的add_action函數的類腳註。

    > set_directory_value()

    >由於我們將啟用CSS和JS,因此將文件目錄URL存儲到可以訪問的變量中是有意義的。我們的目錄結構是 /包括 /event_showcase,但是可以自定義以適合您的結構。 >

    <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()

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

    重寫可確保您的內容類型轉換為漂亮的格式,但是,此重寫很昂貴,並且如果過度完成,則可以減慢您的網站。因為重寫可能會影響您的網站,因此通常僅在主題/插件激活或停用的情況下更改。

    >

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

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

    enqueue_public_scripts_and_styles()

    此功能處理前端網站的腳本和样式的起點。
    <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_public_scripts`)。

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

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

    enqueue_admin_scripts_and_styles()

    此功能處理管理員後端網站的腳本和样式的起點。

    >我們檢查我們是否在我們的內容類型的編輯屏幕或新屏幕上,並且僅在我們的情況下繼續進行(當我們不在正確的頁面上時不需要加載資源)。 ​​
    <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庫的一部分)和JQuery UI Time Picker(構建的樣式與日期選擇器具有類似的樣式)。

    >

    go從上面的鏈接下載時間選擇器庫,並在您的目錄中包含相關的CSS和JS文件。

    add_content_type()

    我們在此功能中聲明我們的自定義內容類型。

    >該函數使用$ singular_name,$ plural_name和$ content_type_nameproperties來使此新帖子類型的註冊輕鬆。

    >

    >這樣的構造註冊函數,這意味著您只需提供幾片信息即可輕鬆更改和註冊帖子類型。

    >有關註冊自定義內容類型的更詳細概述,請查看register_post_type函數的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>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    >添加了此步驟後,您應該看到一個新項目已添加到後端WordPress菜單中。

    WordPress以對象為導向的開發 add_meta_boxes_for_content_type()

    >我們在此處添加內容類型所需的元框。我們調用add_meta_box函數並提供OUT功能。簡短的故事是,我們用它來創建一個新的管理員框來保存我們要保存的新表單元素。

    <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)

    我們使用此功能來輸出我們內容類型的新META信息的後端選項。

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

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

    >此外,我們設置了一個nonce字段,以便我們可以在此頁面上驗證保存。

    >

    >完成此步驟後,您應該看到新的空元框已轉換,現在可以保留我們所有的新信息。

    <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以對象為導向的開發

    這是我們為自定義內容類型的其他元數據保存的地方。 >

    >我們首先檢查了我們在元框中添加的nonce並驗證其真實性。之後,我們檢查我們是否正在執行AutoSave,並且用戶可以實際編輯此頁面。如果所有這些檢查都通過了,我們向前邁進。

    >

    >我們將所有值收集到變量中,並使用Sanitize_text_field函數對它們進行消毒。之後,我們調用update_post_meta函數以保存我們的數據。

    >

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

    我們定義了一個新的動作,稱為display_content_type_meta在我們的__construct函數中,這是它的外觀:
    <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>
    登入後複製
    登入後複製

    這個操作的第二個值稱為display_additional_meta_data,與此功能相對應。這意味著任何時候有人調用do_action('display_content_type_meta');它將調用此函數並顯示新的帖子元信息。

    >

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

    >

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

    此功能將獲得全局$ post和$ post_type,並檢查當前的項目是否是我們的新內容類型。 >

    之後

    其他文件,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>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    現在,大部分功能已經完成,讓我們將其交換到我們的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>
    登入後複製
    登入後複製
    >所有內容都拼湊在一起時,您應該能夠使用其他元數據創建一個新的“事件”。當您查看活動時,您應該在下面看到我的樣本

    >

    您可以看到其他字幕,日期,時間和票務數據。

    >擴展基本的帖子類型並添加額外的元素有助於創建一個更具互動性和簡單的網站來管理。用戶不再需要通過內容區域添加所有這些信息,而這些信息可能會混亂,難以使用和不一致。他們現在有一個易於管理界面的簡單。 WordPress以對象為導向的開發>

    從這裡到哪裡?

    >

    >現在您已經看到了一個實用的對象設計的實踐示例,以及增強開發的容易,您可以運用這些技能並構建更好的主題和插件。

    >

    >您可能想從我的GitHub頁面下載此示例的來源,然後更改它適合即將到來的項目或擴展其以提供其他功能。

    希望本文將幫助您計劃開發,並查看面向對象的方法如何節省您的時間和精力。 >

    經常詢問有關以對象為導向的開發的問題

    > WordPress中的面向對象的編程(OOP)是什麼?這些對像用於相互交互以設計應用程序和軟件。 WordPress中的OOP是有益的,因為它為程序提供了一個清晰的模塊化結構,這使其適合定義隱藏實現詳細信息並且單元具有明確定義的接口的抽像數據類型。

    >面向對象的編程與WordPress中的程序編程有何不同?

    > WordPress對象Cache是​​一個改進WordPress的系統通過將數據庫中的數據存儲在內存中,以防止不必要的查詢。這可以大大加快WordPress的速度,因為它減少了數據庫上的負載。

    >

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

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

    >我如何在我的WordPress主題中實現面向對象的編程?

    >在WordPress中使用面向對象的編程有什麼好處? WordPress中的編程提供了一些好處。它使代碼更緊湊,易於理解和更易於維護。它還可以通過更少的代碼創建更複雜的功能。此外,它允許進行更好的數據分析,更準確的編碼和更快的開發。

    >在帖子標題中出現的'obj'在wordpress中含義是什麼?在WordPress中的帖子標題中,通常是與插件或主題發生衝突的結果。它不是WordPress的標準部分,可以通過識別和解決衝突來刪除它。

    >

    >我如何學習以wordpress為導向的對象編程? WordPress面向對象的編程。這包括在線教程,課程和書籍。您還可以通過檢查WordPress核心代碼來學習,因為它是使用OOP原理編寫的。

    是wordpress開發所需的面向對象的編程嗎?

    > > > > > >

    並不是嚴格地面向對象的編程。強烈建議使用WordPress開發。使用OOP原則可以幫助您的代碼更可讀,可重複使用且易於維護。它還可以幫助您更好地理解WordPress核心代碼。

    >

    >我可以使用WordPress插件使用面向對象的編程?實際上,許多WordPress插件都是使用OOP原理編寫的。這允許更複雜的功能,並可以使插件代碼更易於管理和維護。 >

以上是WordPress以對象為導向的開發的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

如何開始WordPress博客:初學者的分步指南 如何開始WordPress博客:初學者的分步指南 Apr 17, 2025 am 08:25 AM

博客是人們在網上表達觀點、意見和見解的理想平台。許多新手渴望建立自己的網站,卻因擔心技術障礙或成本問題而猶豫不決。然而,隨著平台不斷發展以滿足初學者的能力和需求,現在開始變得比以往任何時候都更容易。 本文將逐步指導您如何建立一個WordPress博客,從主題選擇到使用插件提升安全性和性能,助您輕鬆創建自己的網站。 選擇博客主題和方向 在購買域名或註冊主機之前,最好先確定您計劃涵蓋的主題。個人網站可以圍繞旅行、烹飪、產品評論、音樂或任何激發您興趣的愛好展開。專注於您真正感興趣的領域可以鼓勵持續寫作

wordpress文章列表怎麼調 wordpress文章列表怎麼調 Apr 20, 2025 am 10:48 AM

有四種方法可以調整 WordPress 文章列表:使用主題選項、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代碼(在 functions.php 文件中添加設置)或直接修改 WordPress 數據庫。

如何在父分類的存檔頁面上顯示子分類 如何在父分類的存檔頁面上顯示子分類 Apr 19, 2025 pm 11:54 PM

您想了解如何在父分類存檔頁面上顯示子分類嗎?在自定義分類存檔頁面時,您可能需要執行此操作,以使其對訪問者更有用。在本文中,我們將向您展示如何在父分類存檔頁面上輕鬆顯示子分類。為什麼在父分類存檔頁面上顯示子分類?通過在父分類存檔頁面上顯示所有子分類,您可以使其不那麼通用,對訪問者更有用。例如,如果您運行一個關於書籍的WordPress博客,並且有一個名為“主題”的分類法,那麼您可以添加“小說”、“非小說”等子分類法,以便您的讀者可以

如何在 WordPress 中獲取登錄用戶信息以獲得個性化結果 如何在 WordPress 中獲取登錄用戶信息以獲得個性化結果 Apr 19, 2025 pm 11:57 PM

最近,我們向您展示瞭如何通過允許用戶將自己喜歡的帖子保存在個性化庫中來為用戶創建個性化體驗。您可以通過在某些地方(即歡迎屏幕)使用他們的名字,將個性化結果提升到另一個水平。幸運的是,WordPress使獲取登錄用戶的信息變得非常容易。在本文中,我們將向您展示如何檢索與當前登錄用戶相關的信息。我們將利用get_currentuserinfo(); 功能。這可以在主題中的任何地方使用(頁眉、頁腳、側邊欄、頁面模板等)。為了使其工作,用戶必須登錄。因此我們需要使用

如何在 WordPress 中按帖子過期日期對帖子進行排序 如何在 WordPress 中按帖子過期日期對帖子進行排序 Apr 19, 2025 pm 11:48 PM

過去,我們分享過如何使用PostExpirator插件使WordPress中的帖子過期。好吧,在創建活動列表網站時,我們發現這個插件非常有用。我們可以輕鬆刪除過期的活動列表。其次,多虧了這個插件,按帖子過期日期對帖子進行排序也非常容易。在本文中,我們將向您展示如何在WordPress中按帖子過期日期對帖子進行排序。更新了代碼以反映插件中更改自定義字段名稱的更改。感謝Tajim在評論中讓我們知道。在我們的特定項目中,我們將事件作為自定義帖子類型。現在

對於初學者來說,WordPress容易嗎? 對於初學者來說,WordPress容易嗎? Apr 03, 2025 am 12:02 AM

WordPress對初學者來說容易上手。 1.登錄後台後,用戶界面直觀,簡潔的儀表板提供所有必要功能鏈接。 2.基本操作包括創建和編輯內容,所見即所得的編輯器簡化了內容創建。 3.初學者可以通過插件和主題擴展網站功能,學習曲線存在但可以通過實踐掌握。

如何在 WordPress 中顯示查詢數量和頁面加載時間 如何在 WordPress 中顯示查詢數量和頁面加載時間 Apr 19, 2025 pm 11:51 PM

我們的一位用戶詢問其他網站如何在頁腳中顯示查詢數量和頁面加載時間。您經常會在網站的頁腳中看到這一點,它可能會顯示類似以下內容:“1.248秒內64個查詢”。在本文中,我們將向您展示如何在WordPress中顯示查詢數量和頁面加載時間。只需將以下代碼粘貼到主題文件中您喜歡的任何位置(例如footer.php)。 queriesin

如何使用 IFTTT 自動化 WordPress 和社交媒體(及更多) 如何使用 IFTTT 自動化 WordPress 和社交媒體(及更多) Apr 18, 2025 am 11:27 AM

您是否正在尋找自動化 WordPress 網站和社交媒體帳戶的方法? 通過自動化,您將能夠在 Facebook、Twitter、LinkedIn、Instagram 等平台上自動分享您的 WordPress 博客文章或更新。 在本文中,我們將向您展示如何使用 IFTTT、Zapier 和 Uncanny Automator 輕鬆實現 WordPress 和社交媒體的自動化。 為什麼要自動化 WordPress 和社交媒體? 自動化您的WordPre

See all articles