


Neulich habe ich mich gefragt, wie ich die WordPress-Plugin-Optionen durch eine JSON-Datei steuern lassen kann, sodass man in Zukunft einfacher zusätzliche Einstellungen hinzufügen kann, ohne den Code selbst anpassen zu müssen.
Dieser Artikel enthält ein Beispiel für ein äußerst einfaches WordPress-Plugin mit einer einzigen Einstellungsseite, die aus 2 Abschnitten und 3 Feldern/Optionen besteht.
Der vollständige Code ist auf Github zu finden.
Aufbau der Basis
Das Plugin besteht zunächst aus 3 Dateien.
- adventures.json
- adventures.php
- class.adventures.php
adventures.php mit einer einfachen Plugin-Registrierung:
<?php /* Plugin Name: Adventures Plugin URI: https://mortenhartvig.dk Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed pharetra nisi eu varius pellentesque. Aenean posuere, velit mollis sodales convallis, ipsum lectus feugiat nunc, ac auctor sapien enim eu metus. Version: 1 Requires at least: 6.1 Requires PHP: 8.3 Author: Morten Hartvig Author URI: https://mortenhartvig.dk License: Do whatever you want */ define('ADV__PLUGIN_DIR', plugin_dir_path(__FILE__)); define('ADV__PLUGIN_VIEW', ADV__PLUGIN_DIR . 'views'); define('ADV__PLUGIN_SLUG', 'adv'); require_once ADV__PLUGIN_DIR . 'class.adventures.php'; (new Adventures());
class.adventures.php mit einer leeren Klasse:
<?php class Adventures { public function __construct() { } }
adventures.json enthält die JSON-Struktur der Plugin-Einstellungen:
{ "settings": { "pages": [ { "title": "Adventures", "capability": "manage_options", "slug": "adv" } ], "sections": [ { "id": "portal_base", "title": "Base configuration", "description": "Lorem 1, ipsum dolor sit amet consectetur adipisicing elit. Cumque nulla in officiis. Laborum quisquam illo eaque, deserunt facere mollitia sint doloremque maiores, obcaecati reiciendis voluptate itaque iure fugiat quia architecto!", "view": "section" }, { "id": "portal_appearance", "title": "Appearance", "description": "Lorem 2, ipsum dolor sit amet consectetur adipisicing elit. Cumque nulla in officiis. Laborum quisquam illo eaque, deserunt facere mollitia sint doloremque maiores, obcaecati reiciendis voluptate itaque iure fugiat quia architecto!", "view": "section" } ], "fields": [ { "id": "adv_portal_key", "title": "Portal Key", "section": "portal_base", "type": "text", "placeholder": "Enter your portal key", "view": "field.text" }, { "id": "adv_api_host", "title": "Host API", "section": "portal_base", "type": "text", "placeholder": "Enter API host", "default": "https://api.mortenhartvig.dk", "view": "field.text" }, { "id": "adv_portal_theme", "title": "Theme", "section": "portal_appearance", "type": "select", "options": { "rounded.v1": "Round (V1)", "squared.v1": "Square (V1)", "standard": "Standard" }, "default": "standard", "view": "field.select" } ] } }
JSON-Daten lesen
Erstellen Sie eine Eigenschaft für Ihre Einstellungen und rufen Sie set_settings() auf:
private $settings; public function __construct() { $this->set_settings(); }
Erstellen Sie set_settings() und get_json_data():
private function set_settings() { $data = $this->get_json_data(); $this->settings = $data['settings']; } private function get_json_data() { $file = ADV__PLUGIN_DIR . 'adventures.json'; if (!file_exists($file)) { die('adventures.json not found'); } return json_decode(file_get_contents($file), true); }
Wenn Sie einen die(print_r($this->settings)) zu Ihrem __construct hinzufügen, können Sie bestätigen, dass Ihre Einstellungen tatsächlich geladen sind.
Einstellungsseite
Rufen Sie init_hooks() vom Konstruktor auf:
public function __construct() { $this->set_settings(); $this->init_hooks(); }
Init_hooks() erstellen:
private function init_hooks() { add_action('admin_menu', [$this, 'register_settings_pages']); }
Erstellen Sie register_settings_pages() und Settings_page_callback().
public function register_settings_pages() { foreach ($this->settings['pages'] as $page) { add_options_page($page['title'], $page['title'], $page['capability'], $page['slug'], [$this, 'settings_page_callback']); } } public function settings_page_callback() { $this->render('settings.php'); }
Render() erstellen:
private function render($filename, $args) { if (is_array($args)) { $value = get_option($args['id']); if (empty($value) && isset($args['default'])) { $value = $args['default']; } $args = array_merge($args, ['value' => $value]); } $file = ADV__PLUGIN_VIEW . $filename; if (!str_ends_with($file,'.php')) { $file .= '.php'; } if(!file_exists($file)) { die('File not found ' . $filename); } require $file; }
Ansichten/settings.php erstellen:
<div> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173390329693560.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Creating WordPress plugin options based on a JSON structure"></p> <h3> Sections </h3> <p>Add another action in init_hooks:<br> </p> <pre class="brush:php;toolbar:false">private function init_hooks() { add_action('admin_menu', [$this, 'register_settings_pages']); add_action('admin_init', [$this, 'register_settings_sections']); }
Erstellen Sie register_settings_sections() und Settings_section_callback():
public function register_settings_sections() { foreach ($this->settings['sections'] as $section) { add_settings_section($section['id'], $section['title'], [$this, 'settings_section_callback'], ADV__PLUGIN_SLUG, $section); } } public function settings_section_callback($args) { $this->render($args['view'], $args); }
Ansichten/Abschnitt.php erstellen:
<p> <?php echo $args['description']; ?> </p>
Felder
Fügen Sie eine dritte Aktion in init_hooks hinzu:
private function init_hooks() { add_action('admin_menu', [$this, 'register_settings_pages']); add_action('admin_init', [$this, 'register_settings_sections']); add_action('admin_init', [$this, 'register_settings_fields']); }
Erstellen Sie register_settings_fields() und Settings_field_callback():
public function register_settings_fields() { foreach ($this->settings['fields'] as $field) { add_settings_field($field['id'], $field['title'], [$this, 'settings_field_callback'], ADV__PLUGIN_SLUG, $field['section'], $field); register_setting(ADV__PLUGIN_SLUG, $field['id']); } } public function settings_field_callback($args) { $this->render($args['view'], $args); }
Ansichten erstellen/field.select.php:
<?php $html_options = ''; foreach ($args['options'] as $key => $val) { $html_options .= sprintf('<option value="%s">%s</option>', $key, selected($args['value'], $key, false), $val); } printf('<select name="%s"> <p>Create views/field.text.php:<br> </p> <pre class="brush:php;toolbar:false"><?php printf('<input name="%s"> <h3> Saving </h3> <p>To view and save your options add a form to settings.php:<br> </p> <pre class="brush:php;toolbar:false"><div> <p>Change an option and attempt to <em>Save</em>. The save should be successful.</p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173390329893991.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Creating WordPress plugin options based on a JSON structure"></p> <p>Your settings are now saved and can be accessed throughout the site via:<br> </p> <pre class="brush:php;toolbar:false"><?php echo get_option('adv_portal_theme'); // squared.v1
Neue Felder hinzufügen
Fügen Sie den JSON-Code unten zu „adventures.json“ hinzu:
{ "id": "adv_api_token", "title": "Host API Token", "section": "portal_base", "type": "text", "placeholder": "Enter API host token", "default": "", "view": "field.text" }
Es wird automatisch zu Ihren Einstellungen hinzugefügt:
Das obige ist der detaillierte Inhalt vonErstellen von WordPress-Plugin-Optionen basierend auf einer JSON-Struktur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In dem Artikel werden PHP erörtert, in dem die vollständige Form, Hauptnutzungen in der Webentwicklung, der Vergleich mit Python und Java und seine Lernen des Lernens für Anfänger beschrieben werden.

PHP behandelt Formdaten mit $ \ _ post und $ \ _ GET Superglobals, wobei die Sicherheit durch Validierung, Bereinigung und sichere Datenbankinteraktionen gewährleistet ist.

Der Artikel vergleicht PHP und ASP.NET und konzentriert sich auf ihre Eignung für groß angelegte Webanwendungen, Leistungsunterschiede und Sicherheitsfunktionen. Beide sind für große Projekte lebensfähig, aber PHP ist Open-Source und plattformunabhängig, während ASP.NET,

Die Fallempfindlichkeit von PHP variiert: Funktionen sind unempfindlich, während Variablen und Klassen empfindlich sind. Zu den Best Practices gehören eine konsistente Benennung und Verwendung von Fall-unempfindlichen Funktionen für Vergleiche.

In dem Artikel werden verschiedene Methoden für die Umleitung von Seiten in PHP erörtert, wobei der Schwerpunkt auf der Funktion Header () und in Bezug auf gängige Probleme wie "bereits gesendete" Headers -Fehlern angegangen wird.

In Artikel wird der Typ in PHP angezeigt, eine Funktion zum Angeben erwarteter Datentypen in Funktionen. Das Hauptproblem ist die Verbesserung der Codequalität und der Lesbarkeit durch Typdurchsetzung.

In dem Artikel werden PHP -Datenobjekte (PDO) erörtert, eine Erweiterung für den Datenbankzugriff in PHP. Es zeigt die Rolle von PDO bei der Verbesserung der Sicherheit durch vorbereitete Aussagen und deren Vorteile gegenüber MySQLI, einschließlich Datenbankabstraktion und besserer Fehlerbehandlung.

In Artikel werden PHP -APIs erstellt und gesichert und Schritte von der Endpunktdefinition bis zur Leistungsoptimierung mithilfe von Frameworks wie Laravel und besten Sicherheitspraktiken beschrieben.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor
