在 Wordpress 中为自定义帖子类型添加附加页面

     2023-02-24     253

关键词:

【中文标题】在 Wordpress 中为自定义帖子类型添加附加页面【英文标题】:Adding additional pages for a Custom Post Type in Wordpress 【发布时间】:2015-10-04 17:40:09 【问题描述】:

我创建了一个名为“课程”的自定义帖子类型。

Wordpress 会自动为“课程”添加以下网址:

http://example.com/course/: 存档页面(即archive-course.php) http://example.com/course/course-name/: 课程页面(即single-course.php)

不过,我想再添加几页:

http://example.com/course/course-name/enquiry/:每门课程的查询页面 http://example.com/course/course-name/demo/: 一些课程的演示页面,如果它们满足某个条件

问题是我不确定添加这些页面的“正确”方式。我现在的做法是这样的:

function create_post_types() 
    // ...add custom post types ...

    add_rewrite_rule("course/([^/]+)/enquiry/?$",
        'index.php?post_type=course&course=$matches[1]&enquiry=true', 'top');

    add_rewrite_rule("course/([^/]+)/demo/?$",
        'index.php?post_type=course&course=$matches[1]&demo=true', 'top');

add_action( 'init', 'create_post_types' );

function add_query_vars_filter( $vars )
    $vars[] = "enquiry";
    $vars[] = "demo";
    return $vars;

add_filter( 'query_vars', 'add_query_vars_filter' );

然后在“single-course.php”中添加了以下 if 语句:

if (get_query_var('enquiry')) 
    // enquiry page code
 else if (get_query_var('demo')) 
    // Demo Page code
 else 
    // Single course page code

但是,我做这件事的方式感觉更像是一种 hack,感觉不像是 Wordpress 的正确做法。因此,它不适用于其他插件,例如“Yoast SEO 插件”,它无法识别我在其 XML 站点地图中的附加页面。我认为面包屑也会出现类似的问题。

为自定义帖子类型添加额外页面的最佳做法或更好的方法是什么?

可选问题:还有什么是实现演示页面的合适方法(因为这需要通过get_field('online_course') == True检查课程是否满足特定条件。

【问题讨论】:

我认为您的方法 最正确的方法......但是,如果 yoast 的 wordpress SEO,包含在自动站点地图等中是优先事项,那么我认为最兼容的解决方案是将额外的页面实际创建为子页面(当然是自动创建的)。如果该特定课程没有演示,则有条件的演示页面应该只返回 404 - 如果您创建“物理”子页面,那么您如何做到这一点很容易:不要创建该子页面。如果您坚持使用当前方法,请检查页面本身并返回 404。 注意:您需要相当多的操作挂钩来确保子页面始终反映父页面的状态,并且不会被意外手动删除(如果这可能是一个问题)...换句话说,它会比您当前的解决方案方式更“hackish” - 但我仍然认为它会更兼容。 为什么不将页面添加为 CPT 的子页面? 我同意@Mikk3lRo,使用重写来创建这些类型的页面。你真的要索引联系表格吗? 这不是一个很好的解决方案,而且它会非常复杂(为了它是可靠的),所以我不会花时间整理一个完整的例子。但是您可以以编程方式创建、删除、更新帖子(谷歌它,我在我的 iphone 上写这个),并且您可以将几乎任何更改挂钩到您的自定义帖子类型帖子,以在需要时更新孩子的状态等。所以理论上这绝对是可能的......但我想得越多,我认为它在现实中的想法就越糟糕...... 【参考方案1】:

声明自定义帖子类型

在你的functions.php中:

$labelsCourse = array(
        'name' => 'Course',
        'singular_name' => 'Course',
        'add_new' => 'Add New',
        'add_new_item' => 'Add New Course',
        'edit_item' => 'Edit Course',
        'new_item' => 'New Course',
        'view_item' => 'View Course',
        'search_items' => 'Search Courses',
        'not_found' => 'No courses found.',
        'not_found_in_trash' => 'No courses found in Trash.'
    );
register_post_type('course', array(
    'labels' => $labelsCourse,
    'public' => true,
    'publicly_queryable'    => true,
    'has_archive' => 'course',
    'show_ui' => true,
    'capability_type' => 'page',
    'hierarchical' => true,
    'rewrite' => array( 'slug' => 'course', 'with_front' => false ),
    'query_var' => true,
    'supports' => array('title', 'thumbnail', 'editor', 'page-attributes')
));

然后在您的管理员中添加一个标题为:"course-name" 的新课程,然后添加另一个标题为:"demo" 的新课程。

然后在你的 single-course.php 中你可以添加一个条件语句来调用子页面。

【讨论】:

这似乎比我的方式更骇人听闻,因为“演示”不是一门课程,而只是“课程”的另一个页面。这也意味着我必须在每门课程中添加一个演示。好主意。

为自定义帖子类型创建存档:wordpress

】为自定义帖子类型创建存档:wordpress【英文标题】:CreatearchiveforCustomPostType:wordpress【发布时间】:2016-08-2318:29:50【问题描述】:我已经为我的自定义帖子类型创建了一个archive.php。存档-CUSTOM_POSTTYPE.php我在其中放置了标准循环... 查看详情

如何在WordPress的自定义帖子类型中附加pdf文件?

】如何在WordPress的自定义帖子类型中附加pdf文件?【英文标题】:HowtoattachthepdffileinthecustomposttypeintheWordPress?【发布时间】:2022-01-1910:45:22【问题描述】:我正在使用WordPress。我创建了一个自定义帖子类型。现在我必须添加文件... 查看详情

在 Wordpress 中,如何将自定义帖子类型的默认管理员排序顺序设置为自定义列?

】在Wordpress中,如何将自定义帖子类型的默认管理员排序顺序设置为自定义列?【英文标题】:InWordpress,howdoIsetthedefaultadminsortorderforacustomposttypetoacustomcolumn?【发布时间】:2015-10-0417:28:30【问题描述】:我设置了一个名为clientarea... 查看详情

php检查当前帖子类型是否为自定义帖子类型-wordpress(代码片段)

查看详情

Wordpress 为自定义帖子类型存档页面选择了错误的模板

】Wordpress为自定义帖子类型存档页面选择了错误的模板【英文标题】:WordpressPicksUpWrongTemplateforCustomPostTypeArchivePage【发布时间】:2017-11-2111:31:28【问题描述】:我已经注册了以下两种自定义帖子类型:functiondogs()$labels=array(\'name\'... 查看详情

如何在wordpress中为帖子创建自定义属性[关闭]

】如何在wordpress中为帖子创建自定义属性[关闭]【英文标题】:Howtocreatecustomattributeforpostinwordpress[closed]【发布时间】:2021-10-2119:23:36【问题描述】:我需要一些自定义属性用于wordpress中的帖子,我正在创建一个过滤功能,当任何... 查看详情

WordPress 自定义帖子类型存档-<帖子类型>.php 不起作用

】WordPress自定义帖子类型存档-<帖子类型>.php不起作用【英文标题】:WordPresscustomposttypearchive-<posttype>.phpnotworking【发布时间】:2013-06-0220:18:08【问题描述】:WordPress新手,我一直在尝试为自定义帖子类型创建存档页面,... 查看详情

如何在 wordpress 中显示自定义帖子类型类别?

】如何在wordpress中显示自定义帖子类型类别?【英文标题】:Howtodisplaycustomposttypecategoryinwordpress?【发布时间】:2014-04-1416:13:21【问题描述】:最近我在wordpress中创建了一个自定义帖子类型,并添加了名为category和tags的分类法。... 查看详情

wordpress 自定义帖子类型存档页面问题

】wordpress自定义帖子类型存档页面问题【英文标题】:wordpresscustomposttypearchivepageissue【发布时间】:2015-11-1710:46:12【问题描述】:我知道有很多关于此的帖子和解决方案。但是这些解决方案并没有解决我的问题。请在这里检查一... 查看详情

Wordpress 自定义帖子类型分类 - 获取特定内容

】Wordpress自定义帖子类型分类-获取特定内容【英文标题】:WordpressCustomPostTypeTaxonomy-Getspecificcontent【发布时间】:2017-06-0204:44:05【问题描述】:我有一个包含食品的网站,并且我有一个名为食谱的自定义帖子类型。我需要做的是... 查看详情

php如何在wordpress中为帖子作者添加gravatars(代码片段)

查看详情

在 WordPress 管理列帖子/产品自定义帖子类型中显示 Slug

】在WordPress管理列帖子/产品自定义帖子类型中显示Slug【英文标题】:DisplaySluginWordPressAdminColumnsposts/productscustomposttype【发布时间】:2013-01-1912:22:27【问题描述】:我搜索了很多,除了一个破坏WP的插件之外找不到任何东西。我使... 查看详情

如何在 WooCommerce 中为自定义产品类型启用价格和库存

】如何在WooCommerce中为自定义产品类型启用价格和库存【英文标题】:HowtoenablepriceandinventoryforcustomproducttypeinWooCommerce【发布时间】:2017-08-2321:35:58【问题描述】:我在我的WooCommerce应用程序中创建了一个自定义产品类型functionregis... 查看详情

我们如何在 Hive 中为自定义 Writable 类型编写自定义 ObjectInspector?

】我们如何在Hive中为自定义Writable类型编写自定义ObjectInspector?【英文标题】:HowcanwewriteacustomObjectInspectorinHiveforacustomWritabletype?【发布时间】:2016-06-2717:32:19【问题描述】:我正在尝试为复杂对象类型编写自定义可写类型-以控... 查看详情

Wordpress - 特色图像元框未显示在自定义帖子类型上

】Wordpress-特色图像元框未显示在自定义帖子类型上【英文标题】:Wordpress-FeaturedImageMetaBoxnotshowingoncustomposttype【发布时间】:2012-10-1518:58:58【问题描述】:我刚刚创建了一个自定义帖子类型,但由于某种原因,特色图片元框没有... 查看详情

在 Ruby on Rails 中为帖子添加标签

...。我想在每个帖子上添加一个“标签”字段,比如在***和WordPress上。我可以使用字符串类型(railsgeneratescaffoldposttitle:stringbody:texttags:str 查看详情

在 wordpress 插件电子商务中使用自定义帖子类型

】在wordpress插件电子商务中使用自定义帖子类型【英文标题】:usingaCustomPostTypeinwordpressplugine-commerce【发布时间】:2017-04-0421:28:09【问题描述】:我正在构建一个电子商务网站,其中包含两种类型的“产品”。在为支付管理添加... 查看详情

在 Wordpress Datewise 中为特定类别创建存档

】在WordpressDatewise中为特定类别创建存档【英文标题】:CreatingaArchiveinWordpressDatewiseforaParticularCategory【发布时间】:2009-12-0806:10:08【问题描述】:在我的网站中,我想添加一个存档页面或自定义页面,我想在其中显示来自特定类... 查看详情