Jedes Mal, wenn ich meine Plugin-Optionen speichere, löscht es weitere Plugin-Optionen

Ich habe zwei Plugins erstellt, wenn ich eine Einstellung speichere löscht sie die Einstellungen komplett von der anderen, und es passiert auch umgekehrt.

Ich verstehe wirklich nicht, was das Problem sein könnte, da sie nicht die gleiche allgemeine Konfiguration haben: eine Plugin-Optionen sind in pl_popup_options und die andere in pl_analytics_options gespeichert. Wenn ich jedoch die erste aktualisiere, löscht sie den Wert der anderen aus der database.

War jemand mit einem ähnlichen Problem konfrontiert? Was könnte der Grund dafür sein?

Plugin 1

class PLAnalyticsSettings { /** * Holds the values to be used in the fields callbacks */ private $options; /** * Start up */ public function __construct() { add_action( 'admin_menu', array( $this, 'add_plugin_page' ) ); add_action( 'admin_init', array( $this, 'page_init' ) ); } /** * Add options page */ public function add_plugin_page() { // This page will be under "Settings" add_options_page( 'Settings Admin', 'Pranalog Analytics', 'manage_options', 'pl_analytics_options', array( $this, 'create_admin_page' ) ); } /** * Options page callback */ public function create_admin_page() { // Set class property $this->options = get_option( 'pl_analytics' ); ?> 

Pranalog Analytics Settings

<?php } /** * Print the Section text */ public function print_section_info() { print 'Ingresa el código debajo y se añadirá en el header a computadoras que no hayan registrado un admin:'; } /** * Register and add settings */ public function page_init() { register_setting( 'my_option_group', // Option group 'pl_analytics', // Option name array( $this, 'sanitize' ) // Sanitize ); add_settings_section( 'general_settings', // ID 'Pranalog Analytics', // Title array( $this, 'print_section_info' ), // Callback 'pl_analytics_options' // Page ); add_settings_field( 'code', // ID 'Código', // Title array( $this, 'code_callback' ), // Callback 'pl_analytics_options', // Page 'general_settings' // Section ID ); } /** * Sanitize each setting field as needed * * @param array $input Contains all settings fields as array keys */ public function sanitize( $input ) { // TODO: Sanitize return $input; } /** * Get the settings option array and print one of its values */ public function code_callback() { printf('', isset($this->options['code']) ? esc_attr( $this->options['code']) : '' ); } } if(is_admin()) $pla_settings_page = new PLAnalyticsSettings();

Plugin 2

 class PLPopupSettings { /** * Holds the values to be used in the fields callbacks */ private $options; /** * Start up */ public function __construct() { add_action( 'admin_menu', array( $this, 'add_plugin_page' ) ); add_action( 'admin_init', array( $this, 'page_init' ) ); } /** * Add options page */ public function add_plugin_page() { // This page will be under "Settings" add_options_page( 'Settings Admin', 'Pranalog Popup', 'manage_options', 'pl_popup_options', array( $this, 'create_admin_page' ) ); } /** * Options page callback */ public function create_admin_page() { // Set class property $this->options = get_option( 'pl_popup' ); ?> 

Pranalog Popup Settings

<?php } /** * Print the Section text */ public function print_section_info() { print 'Pranalog Popup te permite mostrar un popup personalizado en todo tu sitio'; } /** * Register and add settings */ public function page_init() { register_setting( 'my_option_group', // Option group 'pl_popup', // Option name array( $this, 'sanitize' ) // Sanitize ); add_settings_section( 'general_settings', // ID 'Pranalog Popup', // Title array( $this, 'print_section_info' ), // Callback 'pl_popup_options' // Page ); add_settings_field( 'enabled', // ID 'Activado', // Title array( $this, 'enabled_callback' ), // Callback 'pl_popup_options', // Page 'general_settings' // Section ID ); add_settings_field( 'content', // ID 'Contenido del Popup', // Title array( $this, 'content_callback' ), // Callback 'pl_popup_options', // Page 'general_settings' // Section ID ); } /** * Sanitize each setting field as needed * * @param array $input Contains all settings fields as array keys */ public function sanitize( $input ) { // TODO: Sanitize return $input; } /** * Get the settings option array and print one of its values */ public function enabled_callback() { // echo the field printf( '', isset( $this->options['enabled'] ) ? esc_attr( $this->options['enabled']) : '' ); } public function content_callback() { printf( '', isset($this->options['content']) ? esc_attr( $this->options['content']) : '' ); } } if(is_admin()) $plp_settings_page = new PLPopupSettings();

Solutions Collecting From Web of "Jedes Mal, wenn ich meine Plugin-Optionen speichere, löscht es weitere Plugin-Optionen"

Die Seite add_options_page() fügt eine Optionsseite im Menü Einstellungen hinzu. Es fügt keine Option hinzu . Sie registrieren Ihre Einstellungen / Optionen mit anderen functionen. Entweder add_option() , add_settings_field() oder register_setting() .

Beide Optionen werden mit demselben Optionsnamen gespeichert und überschreiben sich gegenseitig. Sie müssen jeden von ihnen mit verschiedenen Optionsnamen speichern.