搜索
首页CMS教程WordPressWordPress以对象为导向的开发

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
如何在 Yandex 网站管理员工具中添加您的 WordPress 网站如何在 Yandex 网站管理员工具中添加您的 WordPress 网站May 12, 2025 pm 09:06 PM

您想将您的网站连接到Yandex网站管理员工具吗?Google搜索控制台、Bing和Yandex等网站管理员工具可帮助您优化网站、监控流量、管理robots.txt、检查网站错误等。在本文中,我们将分享如何在Yandex网站管理员工具中添加您的WordPress网站来监控您的搜索引擎流量。什么是Yandex?Yandex是一个位于俄罗斯的流行搜索引擎,类似于Google和Bing。您可以在Yandex中优

如何修复 WordPress 中的 HTTP 图片上传错误(简单)如何修复 WordPress 中的 HTTP 图片上传错误(简单)May 12, 2025 pm 09:03 PM

您需要修复WordPress中的HTTP图片上传错误吗?当您在WordPress中创建内容时,此错误可能会特别令人沮丧。当您使用内置WordPress媒体库将图像或其他文件上传到CMS时,通常会发生这种情况。在本文中,我们将向您展示如何轻松修复WordPress中的HTTP图片上传错误。WordPress媒体上传过程中出现HTTP错误的原因是什么?当您尝试使用WordPress媒体上传器将文件上传到Wo

如何修复添加媒体按钮在 WordPress 中不起作用的问题如何修复添加媒体按钮在 WordPress 中不起作用的问题May 12, 2025 pm 09:00 PM

最近,我们的一位读者报告说,他们的WordPress网站上的“添加媒体”按钮突然停止工作。此经典编辑器问题不会显示任何错误或警告,这使用户不知道为什么他们的“添加媒体”按钮不起作用。在本文中,我们将向您展示如何轻松修复WordPress中的“添加媒体”按钮不起作用的问题。是什么导致WordPress“添加媒体”按钮停止工作?如果您仍在使用旧的经典WordPress编辑器,那么“添加媒体”按钮允许您将图像、视频等插入博客文章中。

如何设置、获取和删除 WordPress Cookie(像专业人士一样)如何设置、获取和删除 WordPress Cookie(像专业人士一样)May 12, 2025 pm 08:57 PM

您想了解如何在WordPress网站上使用cookie吗?Cookie是在用户浏览器中存储临时信息的有用工具。您可以使用此信息通过个性化和行为定位来增强用户体验。在本终极指南中,我们将向您展示如何像专业人士一样设置、获取和删除WordPresscookie。注意:这是一个高级教程。它要求您精通HTML、CSS、WordPress网站和PHP。什么是Cookie?Cookie是用户访问网站时创建并存储在用户浏览

如何修复 WordPress 429 请求过多错误如何修复 WordPress 429 请求过多错误May 12, 2025 pm 08:54 PM

您是否在WordPress网站上看到“429请求过多”错误?此错误消息意味着用户向您网站的服务器发送了太多HTTP请求。此错误可能会非常令人沮丧,因为很难找出导致该错误的原因。在本文中,我们将向您展示如何轻松修复“WordPress429TooManyRequests”错误。是什么原因导致WordPress429请求过多错误?“429TooManyRequests”错误的最常见原因是用户、机器人或脚本尝试向网站

WordPress作为大型网站的CMS有多可扩展?WordPress作为大型网站的CMS有多可扩展?May 12, 2025 am 12:08 AM

WordPressCanHandLeLArgeWebsitesWithCareFulplanningAndOptimization.1)USECACHINGTOREDUCESERVERVERLOAD.2)优化YourdataBaseRegularly.3)actizeyourdatabaseregularly.3)ackdntododistibutecontent.4))

WordPress的定制程度如何?WordPress的定制程度如何?May 11, 2025 am 12:11 AM

WordPress的定制化程度非常高,提供了广泛的灵活性和可定制性。1)通过主题和插件生态系统,2)利用RESTAPI进行前端开发,3)深入代码层面进行修改,用户可以实现高度个性化的体验。然而,定制化需要掌握PHP、JavaScript、CSS等技术,且需注意性能优化和插件选择,以避免潜在的问题。

WordPress作为CMS的核心功能是什么?WordPress作为CMS的核心功能是什么?May 10, 2025 am 12:15 AM

WordPressisanexcellentchoiceforaCMSduetoitsuser-friendlyinterface,extensiveecosystem,SEOcapabilities,scalability,andsupportivecommunity.1)Itsintuitivedashboardmakescontentmanagementeasyforallusers.2)Thevastarrayofthemesandpluginsallowsforextensivecus

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

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版