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

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
wordpress怎麼加評論框wordpress怎麼加評論框Apr 20, 2025 pm 12:15 PM

在 WordPress 網站上啟用評論功能,可以為訪客提供參與討論和分享反饋的平台。為此,請按照以下步驟操作:啟用評論:在儀錶盤中,導航至“設置”>“討論”,並選中“允許評論”複選框。創建評論表單:在編輯器中,單擊“添加塊”並蒐索“評論”塊,將其添加到內容中。自定義評論表單:通過設置標題、標籤、佔位符和按鈕文本來定制評論塊。保存更改:單擊“更新”以保存評論框並將其添加到頁面或文章中。

wordpress怎麼複製子站wordpress怎麼複製子站Apr 20, 2025 pm 12:12 PM

如何復制 WordPress 子站?步驟:在主站創建子站。在主站克隆子站。將克隆導入目標位置。更新域名(可選)。分開插件和主題。

wordpress怎麼寫頁頭wordpress怎麼寫頁頭Apr 20, 2025 pm 12:09 PM

在WordPress中創建自定義頁頭的步驟如下:編輯主題文件“header.php”。添加您的網站名稱和描述。創建導航菜單。添加搜索欄。保存更改並查看您的自定義頁頭。

wordpress評論怎麼顯示wordpress評論怎麼顯示Apr 20, 2025 pm 12:06 PM

WordPress 網站中啟用評論功能:1. 登錄管理面板,轉到 "設置"-"討論",勾選 "允許評論";2. 選擇顯示評論的位置;3. 自定義評論表單;4. 管理評論,批准、拒絕或刪除;5. 使用 <?php comments_template(); ?> 標籤顯示評論;6. 啟用嵌套評論;7. 調整評論外形;8. 使用插件和驗證碼防止垃圾評論;9. 鼓勵用戶使用 Gravatar 頭像;10. 創建評論指

wordpress怎麼上傳源碼wordpress怎麼上傳源碼Apr 20, 2025 pm 12:03 PM

可以通過 WordPress 安裝 FTP 插件,配置 FTP 連接,然後使用文件管理器上傳源碼。步驟包括:安裝 FTP 插件、配置連接、瀏覽上傳位置、上傳文件、檢查上傳成功。

wordpress代碼怎麼複製wordpress代碼怎麼複製Apr 20, 2025 pm 12:00 PM

如何復制 WordPress 代碼?從管理界面複製:登錄 WordPress 網站,導航到目標位置,選擇代碼並按 Ctrl C (Windows)/Command C (Mac) 複製代碼。從文件複製:使用 SSH 或 FTP 連接到服務器,導航到主題或插件文件,選擇代碼並按 Ctrl C (Windows)/Command C (Mac) 複製代碼。

wordpress出現錯誤怎麼辦wordpress出現錯誤怎麼辦Apr 20, 2025 am 11:57 AM

WordPress 錯誤解決指南:500 內部服務器錯誤:禁用插件或檢查服務器錯誤日誌。 404 未找到頁面:檢查 permalink 並確保頁面鏈接正確。白屏死機:增加服務器 PHP 內存限制。數據庫連接錯誤:檢查數據庫服務器狀態和 WordPress 配置。其他技巧:啟用調試模式、檢查錯誤日誌和尋求支持。預防錯誤:定期更新 WordPress、僅安裝必要插件、定期備份網站和優化網站性能。

wordpress怎麼關閉評論wordpress怎麼關閉評論Apr 20, 2025 am 11:54 AM

如何在 WordPress 中關閉評論?特定文章或頁面:在編輯器中取消選中“討論”下的“允許評論”。整個網站:在“設置”->“討論”中取消選中“允許發表評論”。使用插件:安裝 Disable Comments 等插件禁用評論。編輯主題文件:通過編輯 comments.php 文件移除評論表單。自定義代碼:使用 add_filter() 函數禁用評論。

See all articles

熱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

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

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

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

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。