Punto "." nel valore dell'opzione interrompe la funzione di salvataggio delle opzioni
La mia routine di salvataggio delle opzioni del tema è riportata qui sotto. Sto notando che se l'$value['id'] passato dal mio array di opzioni contiene un punto, i dati non vengono passati e le opzioni sembrano interrompersi a quel punto. Dovrei optare per un altro carattere o esiste una soluzione alternativa per utilizzare il punto nel nome di un'opzione?
Ad esempio, questo funziona correttamente:
"id" => "myTheme_color|sidebar",
ma questo no (nessun dato viene passato per il valore):
"id" => "myTheme_color.sidebar",
La funzione di salvataggio è:
function mytheme_add_admin(){
global $themename, $shortname, $options;
if ( $_GET['page'] == basename(__FILE__) )
{
if ( 'save' == $_REQUEST['action'] )
{
foreach ($options as $value)
{
update_option( $value['id'], stripslashes($_REQUEST[$value['id']]) );
}
foreach ($options as $value)
{
if( isset( $_REQUEST[ $value['id'] ] ) )
{
update_option( $value['id'], stripslashes($_REQUEST[ $value['id'] ]) );
echo $value['id'].": ".$_REQUEST[$value['id']]."<br>";
echo $value['id'].": ".stripslashes($_REQUEST[$value['id']])."<br>";
}
}
}
}

I punti e gli spazi vengono sostituiti da PHP per gli indici di array tramite POST e GET. Questo potrebbe causare il tuo problema.

Non sono sicuro di quale sia il problema qui, questo codice di test funziona bene per me:
$options = array( 'test_option' => array('id' => 'myTheme_color.sidebar') );
$test = 'test';
var_dump($options);
foreach ($options as $value) {
var_dump($value['id']);
update_option( $value['id'], $test );
}
Dando una rapida occhiata al codice sorgente, il punto più probabile in cui update_option
potrebbe fallire è se la query SQL per l'inserimento non va a buon fine.
I miei suggerimenti sono di eseguire $wpdb->print_error()
dopo l'operazione per verificare eventuali query fallite e di agganciarsi alle azioni update_option_{$option}
e updated_option
per vedere se vengono attivate (fonte).
