Punctul "." în valoarea opțiunii funcției de salvare a opțiunilor foobars
Funcția mea de salvare a opțiunilor temei este prezentată mai jos. Am observat că dacă $value['id'] trimis din array-ul de opțiuni conține un punct, datele nu sunt transmise și opțiunile par să se întrerupă în acel punct. Ar trebui să optez pentru un alt caracter sau există o soluție pentru utilizarea caracterului punct în numele unei opțiuni?
De exemplu, acest cod funcționează corect:
"id" => "myTheme_color|sidebar",
dar acesta nu funcționează (nu sunt transmise date pentru valoare):
"id" => "myTheme_color.sidebar",
Funcția de salvare este:
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>";
}
}
}
}

Punctele și spațiile sunt înlocuite de PHP pentru indicii de matrice prin POST și GET. Acest lucru poate cauza problema ta.

Nu sunt sigur care este problema aici, acest cod de test funcționează bine pentru mine:
$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 );
}
După o privire rapidă asupra codului sursă, cel mai probabil punct în care update_option
poate eșua este dacă interogarea SQL pentru inserare eșuează.
Sugestiile mele sunt să rulezi $wpdb->print_error()
după operație pentru a verifica dacă interogarea a eșuat și să folosești acțiunile update_option_{$option}
și updated_option
pentru a vedea dacă sunt declanșate (sursă).
