gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:54:33 24 4
gpt4 key购买 nike

我创建了一个名为“类(class)”的自定义帖子类型。

Wordpress 会自动为“类(class)”添加以下网址:

  • http://example.com/course/ : 存档页面(即archive-course.php)
  • http://example.com/course/course-name/ : 类(class)页面(即 single-course.php)

  • 但是,我希望添加更多附加页面:
  • http://example.com/course/course-name/enquiry/ : 每门类(class)的查询页面
  • http://example.com/course/course-name/demo/ : 某些类(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
    }

    然而,我做这件事的方式感觉更像是一种 hack,感觉不像是正确的 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')
    ));

    然后在您的管理员中添加一个名为“类(class)名称”的新类(class),然后添加另一个标题为“演示”的新类(class)。

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

    关于php - 在 Wordpress 中为自定义帖子类型添加附加页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31434510/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com