Ninja Forms Wordpress
Мощный плагин для создания форм. Официальный сайт. Документация.
Здесь я буду описывать плагин для этого плагина.
Создаем в папке /wp-content/plugins/ папку Ninja Form MY в ней создаем файл index.php содержащий:
<?php /** * Plugin Name: Ninja Form MY (Мои дополнения) */ // Дальше будем писать свой код.
Активируем плагин через меню плагинов.
Содержание
Доступ до управления определенной группе пользователей
Для начала ставим плагин User Role Editor, можно конечно и без него, но с ним удобнее.
Настройка User Role Editor
Заходим в Пользователи => Редактор ролей пользователей
Нажимаем Добавить роль и создаем роль например с названием NinjaFormsUsers
Включаем следующие "Возможности ядра":
- edit_posts
- read
Все, это минимальные требуемые права, теперь создаем пользователя (пользователей) и назначаем им эту роль.
Теперь вставляем В наш плагин строчки с сайта разработчиков, что бы получилось следующее:
<?php /** * Plugin Name: Ninja Form MY (Мои дополнения) */ //Даем права // To give Editors access to the ALL Forms menu function my_custom_change_ninja_forms_all_forms_capabilities_filter( $capabilities ) { $capabilities = "edit_pages"; return $capabilities; } add_filter( 'ninja_forms_admin_parent_menu_capabilities', 'my_custom_change_ninja_forms_all_forms_capabilities_filter' ); add_filter( 'ninja_forms_admin_all_forms_capabilities', 'my_custom_change_ninja_forms_all_forms_capabilities_filter' ); // To give Editors access to ADD New Forms function my_custom_change_ninja_forms_add_new_capabilities_filter( $capabilities ) { $capabilities = "edit_pages"; return $capabilities; } add_filter( 'ninja_forms_admin_parent_menu_capabilities', 'my_custom_change_ninja_forms_add_new_capabilities_filter' ); add_filter( 'ninja_forms_admin_add_new_capabilities', 'my_custom_change_ninja_forms_add_new_capabilities_filter' ); /* To give Editors access to the Submissions - Simply replace ‘edit_posts’ in the code snippet below with the capability that you would like to attach the ability to view/edit submissions to.Please note that all three filters are needed to provide proper submission viewing/editing on the backend! */ function nf_subs_capabilities( $cap ) { return 'edit_posts'; } add_filter( 'ninja_forms_admin_submissions_capabilities', 'nf_subs_capabilities' ); add_filter( 'ninja_forms_admin_parent_menu_capabilities', 'nf_subs_capabilities' ); add_filter( 'ninja_forms_admin_menu_capabilities', 'nf_subs_capabilities' ); // To give Editors access to the Inport/Export Options function my_custom_change_ninja_forms_import_export_capabilities_filter( $capabilities ) { $capabilities = "edit_pages"; return $capabilities; } add_filter( 'ninja_forms_admin_parent_menu_capabilities', 'my_custom_change_ninja_forms_import_export_capabilities_filter' ); add_filter( 'ninja_forms_admin_import_export_capabilities', 'my_custom_change_ninja_forms_import_export_capabilities_filter' ); // To give Editors access to the the Settings page function my_custom_change_ninja_forms_settings_capabilities_filter( $capabilities ) { $capabilities = "edit_pages"; return $capabilities; } add_filter( 'ninja_forms_admin_parent_menu_capabilities', 'my_custom_change_ninja_forms_settings_capabilities_filter' ); add_filter( 'ninja_forms_admin_settings_capabilities', 'my_custom_change_ninja_forms_settings_capabilities_filter' );
Если что то не нужно давать не администратору, то комментируем строки.
Все, теперь не только администратор может заниматься ответом на формы, но и почти бесправные операторы :)
Добавление даты модификации при экспорте Submissions
В экспорте Submissions не хватает даты модификации, добавим ее.
Не будем раздувать index.php нашего дочернего плагина и перепишем его, что бы оставить предыдущий функционал. Ninja Form MY/index.php:
<?php /** * Plugin Name: Ninja Form MY (Мои дополнения) */ // Extension directory define("NINJA_FORMS_MY_FIELD_DIR", WP_PLUGIN_DIR."/".basename( dirname( __FILE__ ) ) ); // Check if Ninja Forms plugin is activated if( in_array( 'ninja-forms/ninja-forms.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ){ // Load field file require_once( NINJA_FORMS_MY_FIELD_DIR . "/includes/ninja-form-my-access.php" ); //Из предыдущего примера require_once( NINJA_FORMS_MY_FIELD_DIR . "/classes/subs-my.php" ); //Новый класс NF_Subs, копируем из плагина и редактируем //Replacement NF_Subs class (меняем класс из темы на свой класс NF_Subs_My) function nf_init_my($instance){ $instance->subs = new NF_Subs_My(); } add_action( 'nf_init', 'nf_init_my', 10, 2); }
Уменьшил права из предыдущего примера, оставил только нужное. Ninja Form MY/includes/ninja-form-my-access.php:
<?php // To give Editors access to the ALL Forms menu /* To give Editors access to the Submissions - Simply replace ‘edit_posts’ in the code snippet below with the capability that you would like to attach the ability to view/edit submissions to.Please note that all three filters are needed to provide proper submission viewing/editing on the backend! */ function nf_subs_capabilities( $cap ) { return 'edit_posts'; } add_filter( 'ninja_forms_admin_submissions_capabilities', 'nf_subs_capabilities' ); add_filter( 'ninja_forms_admin_parent_menu_capabilities', 'nf_subs_capabilities' ); add_filter( 'ninja_forms_admin_menu_capabilities', 'nf_subs_capabilities' );
Переписывать весь файл не буду, но берем файл ninja-forms/classes/subs.php копируем в Ninja Form MY/classes/subs-spsl.php и после строк:
// Add our "Date" label. $label_array[0]['_date_submitted'] = __( 'Date Submitted', 'ninja-forms' );
добавляем
// Add our "Date" label. $label_array[0]['_date_modified'] = __( 'Date Modified', 'ninja-forms' );
После строк
} else if ( '_date_submitted' == $field_id ) { // Get the date of our submission. $date = strtotime( Ninja_Forms()->sub( $sub_id )->date_submitted ); // The first item is our date field. $user_value = date( $date_format, $date );
добавляем
} else if ( '_date_modified' == $field_id ) { // Get the date of our modified. $date = strtotime( Ninja_Forms()->sub( $sub_id )->date_modified ); // The first item is our date field. $user_value = date( $date_format, $date );
Oops! That addon is not yet compatible with Ninja Forms THREE
В третей версии плагина, "жадные" разработчики решили прикрыть возможность создания дочерних своему плагинов. Пришлось переименовать папку ninja-forms-my в ninja-form-my что бы пройти проверку на совместимость плагина (проверка тут ./lib/NF_AddonChecker.php) иначе выдавало: Oops! That addon is not yet compatible with Ninja Forms THREE. или Проблема! Этот дополнительный компонент еще не совместим с Ninja Forms 3