我正在基于WordPress创建一个网站,但它不是一个博客,也是一个非常独特的网站,所以我正在开发一个插件,可以添加我需要的各种功能。
特别是,我为一种特殊类型的页面创建了一个自定义帖子类型,任何订阅过该网站的人都可以创建该类型的页面。但为了创建这样的自定义帖子,订阅者需要填写一个复杂的多步骤表单,该表单用于将数据存储在数据库中的各种自定义表中,而不仅仅是wp_posts
. 这种多步骤表单与WordPress中的常规帖子创建/编辑页面大不相同,因此尝试通过添加自定义字段、元框等来对其进行自定义是没有意义的。
此外,我不希望订阅者被发送到仪表板,仪表板只能由管理员看到。因此,我希望自定义帖子创建/编辑页面是前端的一部分,而不是仪表板,尽管我希望管理员能够从仪表板中的自定义帖子类型列表中访问它。基本上,当管理员单击仪表板中自定义帖子类型列表中的帖子时,他会被发送到相同的页面,似乎是前端的一部分,作为创建/编辑此类自定义帖子的常规用户。
我在WordPress开发方面没有太多经验,所以我不确定什么是最好的方法。现在,我想我只需要使用get_header
和get_footer
包括页眉和页脚,使其与前端的其余部分集成,并以某种方式自定义仪表板,以便管理员在单击仪表板中的自定义帖子进行编辑时也会发送到该页面。我只是想确保这是正确的方法,我不应该使用其他我不知道的方法。
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;
});