目录
>关键步骤包括设置目录结构,创建类文件,并实现用于添加和显示自定义内容类型和元框的功能。
为什么对象方向是个好主意?
>这样的好处是,如果您编写足够好的课程,则应该可以在以后重复使用它们,并且只需执行轻微的自定义。
>所有这些都是从姓名之前的双重下划线开始的,可以选择包含在任何类定义中。最好理解所有魔术功能是另一个讨论(这是有关魔术功能和常数的另一篇文章)。
> 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)

热门话题

Java教程
1662
14
CakePHP 教程
1418
52
Laravel 教程
1311
25
PHP教程
1261
29
C# 教程
1234
24
如何开始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 数据库。

如何在 WordPress 中获取登录用户信息以获得个性化结果 如何在 WordPress 中获取登录用户信息以获得个性化结果 Apr 19, 2025 pm 11:57 PM

最近,我们向您展示了如何通过允许用户将自己喜欢的帖子保存在个性化库中来为用户创建个性化体验。您可以通过在某些地方(即欢迎屏幕)使用他们的名字,将个性化结果提升到另一个水平。幸运的是,WordPress使获取登录用户的信息变得非常容易。在本文中,我们将向您展示如何检索与当前登录用户相关的信息。我们将利用get_currentuserinfo(); 功能。这可以在主题中的任何地方使用(页眉、页脚、侧边栏、页面模板等)。为了使其工作,用户必须登录。因此我们需要使用

如何在父分类的存档页面上显示子分类 如何在父分类的存档页面上显示子分类 Apr 19, 2025 pm 11:54 PM

您想了解如何在父分类存档页面上显示子分类吗?在自定义分类存档页面时,您可能需要执行此操作,以使其对访问者更有用。在本文中,我们将向您展示如何在父分类存档页面上轻松显示子分类。为什么在父分类存档页面上显示子分类?通过在父分类存档页面上显示所有子分类,您可以使其不那么通用,对访问者更有用。例如,如果您运行一个关于书籍的WordPress博客,并且有一个名为“主题”的分类法,那么您可以添加“小说”、“非小说”等子分类法,以便您的读者可以

如何在 WordPress 中按帖子过期日期对帖子进行排序 如何在 WordPress 中按帖子过期日期对帖子进行排序 Apr 19, 2025 pm 11:48 PM

过去,我们分享过如何使用PostExpirator插件使WordPress中的帖子过期。好吧,在创建活动列表网站时,我们发现这个插件非常有用。我们可以轻松删除过期的活动列表。其次,多亏了这个插件,按帖子过期日期对帖子进行排序也非常容易。在本文中,我们将向您展示如何在WordPress中按帖子过期日期对帖子进行排序。更新了代码以反映插件中更改自定义字段名称的更改。感谢Tajim在评论中让我们知道。在我们的特定项目中,我们将事件作为自定义帖子类型。现在

如何使用 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 19, 2025 pm 11:51 PM

我们的一位用户询问其他网站如何在页脚中显示查询数量和页面加载时间。您经常会在网站的页脚中看到这一点,它可能会显示类似以下内容:“1.248秒内64个查询”。在本文中,我们将向您展示如何在WordPress中显示查询数量和页面加载时间。只需将以下代码粘贴到主题文件中您喜欢的任何位置(例如footer.php)。queriesin

wordpress主机怎么建站 wordpress主机怎么建站 Apr 20, 2025 am 11:12 AM

要使用 WordPress 主机建站,需要:选择一个可靠的主机提供商。购买一个域名。设置 WordPress 主机帐户。选择一个主题。添加页面和文章。安装插件。自定义您的网站。发布您的网站。

See all articles