Contact Form 7-用静态文件替换数据库配置的表单模板

时间:2021-06-29 作者:mayersdesign

TL;DR - Is there a way CF7 can pull it\'s form markup and tags from a static file, instead of the database? So I can maintain that file in version control.

我们有一个非常复杂的表格,在联系人表格7下运行。它有分支、逻辑等,所有这些都由使用挂钩和过滤器的自定义代码处理。但是,我们仍然需要将描述此表单的代码(数千行)复制并粘贴到;表单编辑器“;在Wordpress管理面板中,如果表单发生更改。但我们永远不会在那里编辑它,这是不可能的,事实上,我们将此表单作为静态文件保存,以便对其进行版本设置。因此,我们依赖于这样一个事实,即数据库中的表单始终与此静态文件匹配。

我今天想到了这一点——为什么不去掉中间人,直接让CF7使用这个文件中的标记呢?这样可以更容易地维护和阻止任何人在编辑器中意外损坏表单标记。

这种机制是否可用?非常感谢。

我发现:https://medium.com/@deyanyanakiev/embed-contact-form-7-in-your-custom-theme-9e038c494815 这是一种在安装时替换默认表单的技术,但据我所知,这将是一次性操作,不允许更新表单。

1 个回复
SO网友:Aurovrata

answered 这是关于Stackoverflow的问题,并将答案重新发布在此处。

我们永远不会在那里编辑它,这是不可能的,

很遗憾,CF7插件从未被设想用于比联系人表单更复杂的任何事情。您可能想和Smart Grid-layout extension 它是专门为创建和维护复杂表单而设计的。它有一个modular functionality 这允许您使用子表单构建表单,从而使表单维护更加容易。

它还使用CodeMirror 编辑器作为其代码编辑器,比CF7插件中使用的荒谬文本区域功能强大得多。

只是让CF7直接使用此文件中的标记?

是的,这是解决你问题的最简单方法。钩住以下CF7过滤器,

add_filter(\'wpcf7_default_template\', \'load_custom_form_template\',10,2);
function load_custom_form_template($template, $prop){
    if($prop !== \'form\') return $template;
    include( \'path-to-your-default-form.php\');
    return $template;
}
现在,如果您确实使用智能网格扩展,它能够加载特定于表单的js和css脚本(仅在加载表单的页面上),那么您可以挂接以下操作来添加JavaScript模板,

add_action(\'cf7sg_default_custom_js_template\', \'use_js_script\',10,1);
function use_js_script($cf7_key){
  include_once \'path-to-your-default-js\';
}
和CSS样式表模板,

add_action(\'cf7sg_default_custom_css_template\', \'use_css_script\',10,1);
function use_css_script($cf7_key){
  include_once \'path-to-your-default-css\';
}

相关推荐

客观和基于证据的WordPress和PHP是否会消亡,因为未来是由前端渲染而不是服务器端渲染组成的?

一个叫Pablo的朋友告诉我要学习WordPress CMS,但另一个叫Lucas的朋友告诉我要学习Strapi CMS,因为服务器端渲染和PHP一般都越来越倾向于使用react、angular或vue等工具进行前端渲染。I do not want your opinion 因为在这个平台上严禁发表意见,他们会让版主关闭这个问题。我想要基于真实证据的事实和可靠的论据来证明WordPress和通过PHP的服务器端呈现在未来30年内是否真的被新的javascript玩具所取代(实际上,如果我还活着的话,我将在