WordPress中具有自定义帖子类型的单个页面的层次结构

问题描述 投票:0回答:2

我有一个名为cities的自定义帖子类型。对于此自定义帖子类型,我将有N个城市相关。

我正在尝试为这些页面创建文件,我认为这样可行:

single.php - 通用的

single-cities.php - 列出城市

single-cities- {city-slug} .php - 为城市提供信息

当我尝试:

/ cities - 它显示的是single.php内容,而不是列表中的单个城市内容。

/ cities / sao-paulo - 它正在运作。它显示了有关圣保罗的信息。

测试:

如果我删除单城市 - {city-slug} .php,并尝试访问/ cities / sao-paulo,它将带来单城市.php

我在这个等级制度中做错了什么?

我的代码注册自定义帖子类型:

$city_args = array(
  'labels'              => $labels,
  'public'              => true,
  'has_archive'         => true,
  'publicly_queryable'  => true,
  'query_var'           => true,
  'capability_type'     => 'post',
  'hierarchical'        => false,
  'supports'             => array(
    'title'
  ),
  'exclude_from_search' => false,
  'menu_icon'           => 'dashicons-building'
);

register_post_type('cities', $city_args);

谢谢!


UPDATE

我想我误解了单页的概念。 single.php只是为了呈现单个帖子,而不是列出自定义帖子类型的帖子。

阅读更多有关这种等级的内容,我试图了解我的城市列表结构,然后将城市信息纳入其中。

也许我应该为城市创建一个页面,然后在这个页面(page-cities.php)中创建代码以引入所有城市。

点击每个城市,它应该转到single.php,是吗?

php wordpress wordpress-theming custom-post-type
2个回答
2
投票

您需要archive-cities.php列出所有城市,一个帖子的单个城市。使用此作为参考:https://codex.wordpress.org/Post_Type_Templates


1
投票

列出所有帖子的页面称为Archive,它存在于register_post_type参数中声明的slug中。

/ cities - 这是您的存档页面,因此它将调用archive-cities.php

/ cities / sao-paulo - 这是一篇文章。它将首先查找单城市 - {city-slug} .php,然后查找单城市.php。

在大多数情况下,您只能使用单城市{city-slug} .php为特定城市制作唯一的模板文件。假设每个城市帖子使用相同的布局,您只需要single-cities.php。

© www.soinside.com 2019 - 2024. All rights reserved.