我创建了一个名为的帖子类型listing和一个随附的存档页面archive-listing.php。当我导航到时/listings,存档页面会正确加载。但是,我希望存档URL为/marketplace。我正在定义rewrite下面的属性,但它似乎无法正常工作。我想念什么?
register_post_type("listing",
array(
"menu_icon" => "dashicons-tag",
"labels" => array(
"name" => __( "Listings" ),
"singular_name" => __("Listing")
),
"public" => true,
"has_archive" => true,
"rewrite" => array("slug" => "marketplace"),
"supports" => array("title", "editor"),
"taxonomies" => array("listing_status")
)
);
Run Code Online (Sandbox Code Playgroud)
您还可以使用:
'has_archive' => 'marketplace'
Run Code Online (Sandbox Code Playgroud)
这样存档页面的 slug 将是 /marketplace 而单个页面将是 /listing
自定义帖子类型的默认 slug 将与帖子类型键(函数的第一个参数)匹配。在您发布的示例中,这将是listing. 然后,您可以通过在重写下指定新的 slug 来继续更改它。然而,这将影响单个帖子和存档。
要设置存档 slug,同时保留单个帖子的常规 slug,您应该使用has_archive。has_archive是一个误导性的名称,因为它接受布尔值或字符串。将其设置为 true 将生成存档页面。相反,传入一个字符串将允许您自定义 slug:
'has_archive' => 'marketplace',
Run Code Online (Sandbox Code Playgroud)
上下文中的示例:
register_post_type( 'listing', [
'menu_icon' => 'dashicons-tag',
'labels' => [
'name' => __( 'Listings' ),
'singular_name' => __( 'Listing' ),
],
'public' => true,
'has_archive' => 'marketplace',
'supports' => [ 'title', 'editor' ],
'taxonomies' => [ 'listing_status' ],
]);
Run Code Online (Sandbox Code Playgroud)
当您注册新的自定义帖子类型时,您需要刷新永久链接。
为此,请转到管理中的“设置”->“永久链接”并点击“保存”(无需更改)。
如果您要创建要分发的内容,您可能希望以编程方式进行。您需要flush_rewrite_rules()通过挂钩插件激活或after_switch_theme操作来运行。文档可以在这里找到:https ://codex.wordpress.org/Function_Reference/flush_rewrite_rules
| 归档时间: |
|
| 查看次数: |
1537 次 |
| 最近记录: |