Как создать раздел (форму) для страницы настроек плагина WordPress (панель администратора)?

Я использую Герберт Плагин Framework и я создаю плагин.

Вот код, который я использую:

panels.php

$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, то он тоже не работает. Как это можно сделать?

Он не генерирует ошибок, и отображается только кнопка отправки.

0

Решение

Нам нужно сосредоточиться на том, куда мы хотим отправить данные.

Ответ: к административная сторона 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.

Примечание: забудьте о крючках на некоторое время. Мы все еще можем подходить к теме, но в большинстве случаев нам не нужна тема.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]