CF7 插件是在 WordPress 的初始阶段编写的,在框架成熟其仪表板集成核心代码之前,因此,插件作者创建了许多扩展管理类的管理页面,以集成表单编辑器页面. WordPress 核心代码发展到如今存在用于仪表板中插件集成的标准机制,以便利用管理界面中已经内置的许多功能,而 CF7 插件代码将其遗留代码保留到指出许多现有的核心功能不适用于 CF7 插件。比如adding custom columns到表格列表。
CF7 表单存储为自定义帖子类型wpcf7_contact_form,但是,表格列表和编辑器页面都是自定义管理页面(分别与edit.php 和 post.php 相对)。在 CF7 插件上使用 WP 核心标准功能将始终是一个挑战。正是这个原因让我开发了一个插件扩展,将 CF7 插件带回 WP 核心标准。我写了Smart Grid-Layout design Extension,以便能够通过创建一个集成了 UI 设计器的新表单编辑器来创建响应式网格布局表单。因此,表格列表和表单编辑器页面现在是 WP 核心页面,它们利用了框架的全部功能。
使用此扩展,可以通过defining a new role 或adding additional capabilities to an existing role 使用WordPress 功能来微调用户角色访问。允许您控制访问的 CF7 功能是,
'edit_posts' => 'wpcf7_edit_contact_forms'; //controls access to form table
'edit_others_posts' => 'wpcf7_edit_others_contact_forms'; //controls access to forms created by other users.
'edit_published_posts' => 'wpcf7_edit_published_contact_forms'; //ability to edit published forms.
'delete_posts' => 'wpcf7_delete_contact_forms'; //delete forms.
'delete_published_posts' => 'wpcf7_delete_published_contact_forms'; //delete published forms.
'delete_others_posts' => 'wpcf7_delete_others_contact_forms'; //delete forms created by other users.
'publish_posts' => 'wpcf7_publish_contact_forms'; //publish forms, else status are set as pending.
例如,为表单编辑器创建一个新角色,
add_action('init', 'create_cf7editor_role');
function create_cf7editor_role(){
add_role('cf7_editor', 'Form Editor',
array('wpcf7_edit_contact_forms'=>1,
'wpcf7_edit_others_contact_forms'=>1,
'wpcf7_edit_published_contact_forms'=>1,
'wpcf7_read_contact_forms'=>1,
'wpcf7_publish_contact_forms'=>1,
'wpcf7_delete_contact_forms'=>1,
'wpcf7_delete_published_contact_forms'=>1,
'wpcf7_delete_others_contact_forms'=>1)
);
}