Toda vez que eu salve minhas opções de plugin, ele apaga outras opções do plugin

Eu criei dois plugins, quando eu salvar algumas configurações ele apaga completamente as configurações do outro, e também acontece ao contrário.

Eu realmente não entendo o que o problema pode ser, uma vez que eles não compartilham a mesma configuração geral: as opções de um plugin são salvas em pl_popup_options e a outra em pl_analytics_options. No entanto, quando eu atualizar o primeiro, ele apaga o valor do outro do database.

Alguém enfrentou uma questão semelhante? Qual poderia ser o motivo disso?

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 "Toda vez que eu salve minhas opções de plugin, ele apaga outras opções do plugin"

A página add_options_page() adiciona uma página de opções no menu Configurações. Não adiciona uma opção . Você está registrando suas configurações / opções usando outras funções. Ou add_option() , add_settings_field() ou register_setting() .

Ambas as suas opções são salvas com o mesmo nome da opção , portanto, se substituem. Você precisa salvar cada um deles com diferentes nomes de opções.