Я использую Герберт Плагин Framework и я создаю плагин.
Вот код, который я использую:
$panel->add([
'type' => 'panel',
'as' => 'mainPanel',
'title' => 'Plugin',
'rename' => 'General',
'slug' => 'plugin-admin-settings',
'icon' => 'dashicons-chart-area',
'uses' => __NAMESPACE__ . '\Controllers\PluginController@createAdminPage'
]);
Теперь PluginController
<?php
namespace Plugin\Controllers;
use Herbert\Framework\Models\Option;
use Herbert\Framework\RedirectResponse;
use Herbert\Framework\Http;
use \Google_Client;
use \Google_Service_Analytics;
use Plugin\Helper;
class PluginController {
public static function createAdminPage()
{
$this->option = get_option('pluginAuthenticationSetting');
//if (!isset($this->option['authenticationCode'])):
//if (get_option('pluginAuthenticationSetting') == FALSE):
return view('@Plugin/auth.twig', [
'title' => 'Analytics Reports',
'content' => SELF::settings()
]);
//endif;
}
public static function settings()
{
settings_fields('pluginAuthenticationSetting');
do_settings_sections('pluginAuthenticationSetting');
submit_button();
}
public static function pageInit()
{
wp_register_script(
'plugin',
Helper::assetUrl('/jquery/plugin.js'),
array( 'jquery' )
);
wp_localize_script(
'plugin',
'ajax_object',
array( 'ajax_url' => admin_url( 'admin-ajax.php' ),
'we_value' => 1234 )
);
register_setting(
'pluginAuthenticationSetting',
'plugin_authorization_setting',
array( __CLASS__, 'sanitize' )
);
add_settings_section(
'authenticationSection',
'Authentication Section',
array( __CLASS__, 'printAuthenticationSection' ),
'pluginAuthenticationSetting'
);
add_settings_field(
'authenticationCode',
'Authentication Code',
array( __CLASS__, 'authenticationCodeCallback' ),
'apluginAuthenticationSetting',
'authenticationSection'
);
}
public function sanitization( $input )
{
$new_input = array();
if (isset( $input['authenticationCode']))
$new_input['authenticationCode'] = sanitize_text_field($input['authenticationCode']);
return $new_input;
}
public static function printAuthenticationSection()
{
print 'Enter Your Authentication Code Below:';
}
public static function authenticationCodeCallback()
{
printf( '<input type="text" id="authentication" name="analyticaAuthenticationSetting[authenticationCode]" value="%s" />', isset( $this->option['authenticationCode'] ) ? esc_attr( $this->option['authenticationCode'] ) : '');
}
}
Сейчас pageInit()
нуждается в admin_init
крюк. Если я создаю конструктор и пытаюсь как add_action('admin_init', array(__CLASS__, 'pageInit'));
, это не работает. Если я использую его при создании панели и вызываю createAdminPage, то он тоже не работает. Как это можно сделать?
Он не генерирует ошибок, и отображается только кнопка отправки.
Нам нужно сосредоточиться на том, куда мы хотим отправить данные.
Ответ: к административная сторона WordPress, то есть нам нужно использовать панель сделать работу. Когда мы отправляем данные сторона клиента, мы используем маршрут.
Вот код
$panel->add([
'type' => 'panel',
'as' => 'mainPanel',
'title' => 'Analytica',
'rename' => 'General',
'slug' => 'analytica-admin-settings',
'icon' => 'dashicons-chart-area',
'uses' => __NAMESPACE__ . '\Controllers\AnalyticaController@index',
'post' => [
// Sending data to save using post.
'save' => __NAMESPACE__ . '\Controllers\AnalyticaController@save',
]
]);
<?php namespace Analytica\Controllers;
use Herbert\Framework\Models\Option;
use Herbert\Framework\RedirectResponse;
use Herbert\Framework\Http;
use Herbert\Framework\Enqueue;
use Herbert\Framework\Notifier;
use \Google_Client;
use Analytica\Helper;
class AnalyticaController {
public function index(){
// Display the form
}
public function save(){
// Validate and save the data
}
}
Вы должны сосредоточиться на use Herbert\Framework\Models\Option;
, Это означает, что есть модель под названием вариант это представляет wp_options
Таблица.
Теперь, какие функции мы используем здесь?
Мы можем использовать Laravel Красноречивая и Схема здесь. Теперь вы можете это понять; мы можем сделать много вещей здесь. Это похоже на то, что у нас есть несколько готовых моделей, и мы работаем над тем же Laravel.
Примечание: забудьте о крючках на некоторое время. Мы все еще можем подходить к теме, но в большинстве случаев нам не нужна тема.
Других решений пока нет …