TL;DR -有什么方法CF7可以从静态文件而不是数据库中提取表单标记和标记吗?这样我就可以在版本控制中维护该文件了.
我们有一个非常复杂的形式运行在接触式7下。它有分支,逻辑和更多,所有的处理都使用自定义代码使用钩子和过滤器。但是,如果表单被更改,我们仍然必须将描述此表单的(数千行)代码复制并粘贴到Wordpress管理面板中的“表单编辑器”中。我们永远不会在那里编辑它,这是不可能的,事实上,我们把这个表单作为一个静态文件,这样我们就可以对它进行编辑。因此,我们依赖于这样一个事实:数据库中的表单在任何时候都与这个静态文件匹配。
今天我就想到了--为什么不直接从这个文件中删除中间人物,让CF7直接使用标记呢?这将更容易维护,并阻止任何人意外损坏编辑器中的表单标记。
是否有这样的机制?非常感谢。
我发现了这一点:https://medium.com/@deyanyanakiev/embed-contact-form-7-in-your-custom-theme-9e038c494815是一种在安装时替换默认表单的技术,但据我所知,这将是一次性操作,不允许对表单进行更新。
发布于 2021-09-23 13:59:42
我们永远不会在那里编辑,这是不可能的,
很明显,CF7插件从来没有为比联系人形式更复杂的东西而设计。您可能希望使用专门为创建和维护复杂表单而设计的智能电网-布局扩展。它有一个模块化功能,允许您使用子表单构建表单,从而使表单维护更加容易。
它还使用优秀的CodeMirror编辑器作为代码编辑器,比CF7插件中使用的可笑的textarea强大得多。
让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;
}现在,如果您确实使用了Smart扩展,它能够加载表单特定的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';
}https://stackoverflow.com/questions/68067960
复制相似问题