用于创建/编辑自定义帖子类型的自定义页面

时间:2019-11-13 作者:Philippe

我正在基于WordPress创建一个网站,但它不是一个博客,也是一个非常独特的网站,所以我正在开发一个插件,可以添加我需要的各种功能。

特别是,我为一种特殊类型的页面创建了一个自定义帖子类型,任何订阅过该网站的人都可以创建该类型的页面。但为了创建这样的自定义帖子,订阅者需要填写一个复杂的多步骤表单,该表单用于将数据存储在数据库中的各种自定义表中,而不仅仅是wp_posts. 这种多步骤表单与WordPress中的常规帖子创建/编辑页面大不相同,因此尝试通过添加自定义字段、元框等来对其进行自定义是没有意义的。

此外,我不希望订阅者被发送到仪表板,仪表板只能由管理员看到。因此,我希望自定义帖子创建/编辑页面是前端的一部分,而不是仪表板,尽管我希望管理员能够从仪表板中的自定义帖子类型列表中访问它。基本上,当管理员单击仪表板中自定义帖子类型列表中的帖子时,他会被发送到相同的页面,似乎是前端的一部分,作为创建/编辑此类自定义帖子的常规用户。

我在WordPress开发方面没有太多经验,所以我不确定什么是最好的方法。现在,我想我只需要使用get_headerget_footer 包括页眉和页脚,使其与前端的其余部分集成,并以某种方式自定义仪表板,以便管理员在单击仪表板中的自定义帖子进行编辑时也会发送到该页面。我只是想确保这是正确的方法,我不应该使用其他我不知道的方法。

1 个回复
SO网友:Kaperto

定义短代码后,他必须返回HTML输出。然后,要允许主题自定义数据表示,可以执行以下操作:

add_shortcode("form_step_2", function ($attr, $content, $tag) {

    // preparing data
    //...


    // result to display

    $template_name = "form/step_2";

    // search the file wp-content/themes/twentytwenty/my_plugin/form/step_2.php
    $template = locate_template("my_plugin/$template_name.php");

    // if the file doesn\'t exist in the theme
    if ("" === $template) {
        // use the plugin file wp-content/plugins/my_plugin/templates/form/step_2.php
        $template = __DIR__ . "/templates/$template_name.php";
    }

    ob_start();
    require $template;
    $output = ob_get_clean();


    return $output;

});

相关推荐

Change home-url in dashboard

我想知道我是否可以更改;主页“-仪表板管理栏中的按钮。现在它只是重定向到/, 但我需要它重定向到/velkommen.每当登录用户登录时/, 它们已重定向到/velkommen, 因此,在某种程度上,它已经按我所希望的那样工作了(有一个额外的重定向),但最好不要运行javascript重定向,因为它会为用户创建等待时间。为了运气,我尝试了以下方法:Change homepage urlHow to change the Admin-bar's link target?