我创建了一个名为“类(class)”的自定义帖子类型。
Wordpress 会自动为“类(class)”添加以下网址:
但是,我想添加更多其他页面:
问题是我不确定如何添加这些页面的“正确”方式。我现在的做法是这样的:
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
}
然而,我这样做的方式感觉更像是一种黑客行为,而不是正确的 Wordpress 方式。因此,它不适用于其他插件,例如“Yoast SEO 插件”,它无法识别我在 XML 站点地图中的其他页面。我认为面包屑也会出现类似的问题。
为自定义帖子类型添加其他页面的最佳实践或更好的方法是什么?
可选问题: 还有什么是实现演示页面的合适方法(因为这需要通过
get_field('online_course') == True
检查类(class)是否满足特定条件。 最佳答案
声明自定义帖子类型
在您的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”的新类(class),然后添加另一个名为“demo”的新类(class)。
然后在你的 single-course.php 中你可以添加一个条件语句来调用子页面。
关于php - 在 Wordpress 中为自定义帖子类型添加其他页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31434510/