注册自定义post类型与面向对象编程和类无关。
在数据库中,有一列名为post_type
, 有些帖子属于post
, 一些page
, 当您调用register_post_type
告诉WP如何处理新值。
但除此之外,除非您创建一个PHP类,否则没有PHP类(如果您创建了,我不确定您会让它做什么)。
如果将post ID传递给API,如get_the_author
它知道作者,因为帖子有作者,并且帖子表中有一个author列。
至于帖子本身,有一个通用的WP_Post
WP从数据库中获取帖子时创建的对象,但该对象只是一个助手。这不是实际的post本身,只是从数据库中获取数据时存储数据的一种方便方式。此对象没有用于自定义帖子类型的特殊版本,并且您不会通过创建WP_Post
对象。修改其中一个对象也不会更新数据库,它不是ORM数据库层,也没有使用getter和setter,它们只是普通的成员变量。WP_Post
也不提供任何更新数据库的方法。
因此,如果您想处理帖子:
get_post
如果您向post对象传递ID,它将为您提供一个post对象。如果您不传递ID,它将假定您需要当前的postWP_Query
获取给定一些参数的多篇帖子,并允许您在帖子循环中对其进行循环wp_insert_post
和wp_update_post
可以创建和更新帖子wp_trash_post
垃圾帖子WordPress中没有太多OOP我问的原因是;如果我创建一个新的自定义帖子类型,并在自定义帖子类型上使用诸如get\\u the\\u author()之类的函数,那么这些函数可以工作,尽管在设置CPT时我不一定定义作者。
正如我之前所说,帖子类型只是数据库中的一个字段。为了让WP知道如何在运行时处理它们,需要通过register_post_type
, 它告诉它关于帖子类型,它的用户友好名称,它是否出现在搜索结果中,它是否有URL和存档等。否则它们只是帖子
请记住,当对网页的请求结束时,所有内容都会消失,除了存储到文件系统和数据库中的内容之外,PHP请求的任何内容都不会持久存在。PHP不像Node或Python那样处理多个请求。在PHP中,创建一个进程来处理您的请求,然后该进程终止,WP从头开始加载到每个请求上