Get_the_Author如何连接到自定义帖子类型?

时间:2019-04-30 作者:Dan Sutherland

我对Wordpress及其开发的某些概念有疑问,如果有人能帮我澄清一下,那就太好了!

我了解PHP类,了解如何生成和使用Wordpress自定义Post类型,CPT的对象是类的对象吗,即是否有“Post”对象和自定义Post类型只是类的对象?

我问的原因是;如果我创建一个新的自定义帖子类型,并在自定义帖子类型上使用诸如get\\u the\\u author()之类的函数,那么这些函数可以工作,尽管在设置CPT时我不一定定义作者。

我推测这是因为它是post对象的属性,而author是setter在创建任何post类型时设置的属性?但这正是我的理解有所下降的地方。

1 个回复
SO网友:Tom J Nowell

注册自定义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_postwp_update_post 可以创建和更新帖子wp_trash_post 垃圾帖子WordPress中没有太多OOP

    我问的原因是;如果我创建一个新的自定义帖子类型,并在自定义帖子类型上使用诸如get\\u the\\u author()之类的函数,那么这些函数可以工作,尽管在设置CPT时我不一定定义作者。

    正如我之前所说,帖子类型只是数据库中的一个字段。为了让WP知道如何在运行时处理它们,需要通过register_post_type, 它告诉它关于帖子类型,它的用户友好名称,它是否出现在搜索结果中,它是否有URL和存档等。否则它们只是帖子

    请记住,当对网页的请求结束时,所有内容都会消失,除了存储到文件系统和数据库中的内容之外,PHP请求的任何内容都不会持久存在。PHP不像Node或Python那样处理多个请求。在PHP中,创建一个进程来处理您的请求,然后该进程终止,WP从头开始加载到每个请求上

相关推荐

Author.php中的自定义帖子类型

拜托,我已经和这个问题斗争了好几天了。。。我想在author archive中显示自定义帖子类型,并能够在今天早些时候获得此代码来显示它们:add_action( \'pre_get_posts\', function ( $q ) { if( !is_admin() && $q->is_main_query() && $q->is_author() ) { $q->set( \'posts_pe