【问题标题】:custom endpoint in wp pluginwp插件中的自定义端点
【发布时间】:2021-01-12 06:39:41
【问题描述】:

如何在 wodpress 插件中实现自定义端点,如

http://example.com/classroom/group/%7Bgroup_id%7D

我希望 /classroom/ 在域名之后的根级别,这将加载插件的教室模板和组的组模板。

所以这里需要两个模板来加载自定义 url。

http://example.com/classroom/ 将加载教室模板和 http://example.com/classroom/group/1 将加载组模板。

【问题讨论】:

    标签: wordpress url-rewriting endpoint wordpress-plugin-creation


    【解决方案1】:

    首先制作一个标题为“教室”的页面。这将成为您的 /classroom 路线。然后创建另一个标题为“组”的页面。将课堂页面设为该页面的父级。结果,此页面 slug 变为 /classroom/group。现在所有 /classroom/group/id 请求都进入您的小组页面。在此页面中,您的插件需要获取 URL(例如使用 $wp->request,see)并提取其中的 id 部分。根据该 ID 加载您的模板。

    【讨论】:

    • 我只想拥有插件,不想从仪表板创建任何页面。
    • 您的插件可以在激活时以编程方式创建所有这些页面(当然还要检查它们是否不是之前安装创建的)。您可以使用 wp_insert_post 之类的标准命令以编程方式创建页面,并将插件 shorcodes 插入其中以进行进一步定制。这是一个标准的 wp 流程
    【解决方案2】:

    您可以为教室创建自定义帖子类型,并使用这样的文件名为其分配模板

    single-classroomcustomposttype.php
    

    template hierarchy 的法典详情在这里

    要创建分层自定义帖子类型,您必须在supports 数组中设置page-attributes,并将hierarchical 标志设置为true

    要为群组加载不同的模板,我认为最简单的解决方案是在 single-classroomcustomposttype.php 中使用这个 if 语句

    if( $post->post_parent != 0 ) {
        // not top level
    } else {
        // top level page
    }
    

    【讨论】:

    • 我不会创建自定义帖子类型
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2020-06-05
    • 2012-12-15
    • 2013-04-12
    • 2021-04-05
    • 2015-09-19
    • 1970-01-01
    相关资源
    最近更新 更多