搜索
首页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
如何轻松地将博客从 WordPress.com 移至 WordPress.org如何轻松地将博客从 WordPress.com 移至 WordPress.orgApr 18, 2025 am 11:33 AM

您想将博客从 WordPress.com 移至 WordPress.org 吗? 许多初学者从 WordPress.com 开始,但很快意识到其局限性,并希望切换到自托管 WordPress.org 平台。 在本分步指南中,我们将向您展示如何正确地将博客从 WordPress.com 移动到 WordPress.org。 为什么从 WordPress.com 迁移到 WordPress.org? WordPress.com 允许任何人通过创建帐户来

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

您是否正在寻找自动化 WordPress 网站和社交媒体帐户的方法? 通过自动化,您将能够在 Facebook、Twitter、LinkedIn、Instagram 等平台上自动分享您的 WordPress 博客文章或更新。 在本文中,我们将向您展示如何使用 IFTTT、Zapier 和 Uncanny Automator 轻松实现 WordPress 和社交媒体的自动化。 为什么要自动化 WordPress 和社交媒体? 自动化您的WordPre

如何修复 WordPress 中的自定义菜单项限制如何修复 WordPress 中的自定义菜单项限制Apr 18, 2025 am 11:18 AM

就在几天前,我们的一位用户报告了一个不寻常的问题。问题是他达到了自定义菜单项的限制。达到菜单项限制后他保存的任何内容都将根本无法保存。我们从未听说过这个问题,因此我们决定在本地安装上尝试一下。创建了 200 多个菜单项并保存。效果很好。将 100 个项目移至下拉列表中,保存效果非常好。那时我们就知道这与服务器有关。经过进一步研究,似乎还有许多其他人也遇到了同样的问题。深入挖掘后,我们发现了一张 trac 票证 ( #14134 ) 强调了这个问题。在阅读了非常

如何在 WordPress 中将自定义元字段添加到自定义分类法如何在 WordPress 中将自定义元字段添加到自定义分类法Apr 18, 2025 am 11:11 AM

您需要将自定义元字段添加到 WordPress 中的自定义分类法吗? 自定义分类法可让您组织除类别和标签之外的内容。有时添加其他字段来描述它们很有用。 在本文中,我们将向您展示如何将其他元字段添加到他们创建的分类法中。 何时应将自定义元字段添加到自定义分类法? 当您在WordPress 网站上创建新内容时,您可以使用两种默认分类法(类别和标签)对其进行组织。 一些网站受益于自定义分类法的使用。这些允许您以其他方式对内容进行排序。 例如,

如何使用 Windows Live Writer 远程发布到 WordPress如何使用 Windows Live Writer 远程发布到 WordPressApr 18, 2025 am 11:02 AM

Windows live writer 是一款多功能工具,可让您直接从桌面将帖子发布到 WordPress 博客上。这意味着您根本不需要登录 WordPress 管理面板来更新您的博客。在本教程中,我将向您展示如何使用 Windows Live Writer 为您的 WordPress 博客启用桌面发布。 如何在 WordPress 上设置 Windows Live Writer 第 1 步: 要通过 Windows Live Writer 在 WordPr

如何修复 WordPress 可视化编辑器中的白色文本和缺失按钮如何修复 WordPress 可视化编辑器中的白色文本和缺失按钮Apr 18, 2025 am 10:52 AM

最近,我们的一位用户报告了一个非常奇怪的安装问题。写帖子时,他们看不到自己写的任何内容。因为帖子编辑器的文字是白色的。更重要的是,所有可视化编辑器按钮都丢失了,并且从可视化切换到 HTML 的功能也不起作用。在本文中,我们将向您展示如何修复 WordPress 可视化编辑器中的白色文本和缺失按钮问题。 初学者注意事项:如果您正在寻找可能在其他网站的屏幕截图中看到的隐藏按钮,那么您可能正在寻找厨房水槽。您必须单击厨房水槽图标才能看到其他选项,例如下划线、从单词复制等。

如何在 WordPress 中显示用户电子邮件中的头像如何在 WordPress 中显示用户电子邮件中的头像Apr 18, 2025 am 10:51 AM

您想在 WordPress 中显示用户电子邮件中的头像吗? Gravatar 是一项将用户的电子邮件地址连接到在线头像的网络服务。WordPress 会自动在评论部分显示访问者的头像,但您可能也想将它们添加到网站的其他区域。 在本文中,我们将向您展示如何在 WordPress 中显示用户电子邮件中的头像。 什么是 Gravatar 以及为什么要显示它? Gravatar代表全球认可的头像,它允许人们将图片链接到他们的电子邮件地址。 如果网站支

如何更改 WordPress 中的默认媒体上传位置如何更改 WordPress 中的默认媒体上传位置Apr 18, 2025 am 10:47 AM

您想更改 WordPress 中的默认媒体上传位置吗? 将媒体文件移动到其他文件夹可以提高网站的速度和性能,并帮助您更快地创建备份。它还使您可以自由地以最适合您的方式组织文件。 在本文中,我们将向您展示如何更改 WordPress 中的默认媒体上传位置。 为什么要更改默认媒体上传位置? 默认情况下,WordPress 将所有图像和其他媒体文件存储在 /wp-content/uploads/ 文件夹中。 在此文件夹中,您将找到不同年份和月份的子

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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

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

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器