我有一个共同的设计模式我不完全确定如何在WordPress中最好地执行。布局是概述页面上的后期预告(标题,修剪的正文,图像)的列表。让我们说example.com是一个划船安全公司,在example.com/classes中,使用archive.php或archive- $ posttype.php列出了他们的班级类型的帖子
到目前为止,它已经失去了简单和默认的WordPress行为。但是,我希望在此概述页面上提供有关此类信息的一些介绍信息。此外,我们假设我假设有10个自定义帖子类型,每个人都会遵循这种模式,并在档案页面上有一个列表和一般介绍段落。
我 想要做的是为每种类型设置一个页面,并在页面模板中为每个类型执行自定义查询。如果有一种方法可以将描述,甚至更好的自定义字段与帖子类型本身关联(不是在该类型的帖子上,而是类型本身),那将是理想的情景。理想情况下,我希望将这一切都包含在archive.php模板中。
有人知道一个很好的方法来解决这个问题吗?
这可能有用,也可能没有帮助,但我会在代码中创建帖子类型,但使用自定义字段本身的高级自定义字段。
答案 0 :(得分:2)
阅读有关创建帖子类型的信息,有一个for archive选项,将其设置为no,它不会为列表视图等创建标准URL。您可以修改archive.php以包含所有帖子类型。
我认为您对服务器上存在wordpress自定义帖子类型的方式感到困惑。基本上它们只存在于php代码中,因此每次加载wp系统时,你的自定义代码都会运行以创建自定义帖子类型......你基本上是在这个阶段设置帖子类型的规则 - 所以
Wordpress如果发现posttype是public& has_archive将使用适当的模板解析任何对post类型的url请求...例如帖子类型为“mypost”。在这种情况下,键入www.example.com/mypost将返回主题中的归档视图(archive.php或archive-mypost.php)。此文件位于您的主题中,您可以对其进行修改以包含所有帖子类型的存档(将get_posts替换为wp_query以完全控制帖子)
在这些存档页面上,您将看到一个名为get_posts / wp_query的函数,然后是标准循环结构,以遍历每个项目。这些函数查询数据库中的wp_posts表以返回您正在查询的post_type的行(要求函数查找)(请参阅数据库和wp_posts中的post_type列)。还有一个辅助表来存储无限的额外字段(在理论上并没有把我的内存限制推到一边,在额外的字段上没有WP限制)在名为post_meta的表中使用post id (wp_posts中行的唯一标识符)。您可以使用get_post_meta()(google it)
来显示此信息那么假设安装了一个主题,你会在哪里离开? (最好在这里创建一个儿童主题)
答案 1 :(得分:0)
register_post_type()
有description arg,默认为空字符串。您可以使用它并获得如下的描述:
$obj = get_post_type_object( 'my_post_type' );
echo $obj->description;
答案 2 :(得分:0)
如果我理解正确,您只需要为每种帖子类型加载一个不同的描述,但维护一个archive.php,基本上,您只需要像这样显示描述即可:
<?php
if (get_the_post_type_description()) {
echo get_the_post_type_description();
}
?>