2015-04-28 10 views
9

Ho plugin per WordPress che registrano le impostazioni come:get_option wordpress ritorno falso

register_settings("myplugin_settings","myplugin_option1"); 

e sull'attivazione plug-in è l'aggiunta di opzioni quali:

add_option("myplugin_option1",""); 

Poi se aggiorno opzione, come:

update_option("myplugin_option1","something else"); 

e successivamente cercare di ottenerlo dal database:

$myoption = get_option("myplugin_option1"); 

get_option() restituisce false, anche l'opzione esiste e il valore viene aggiornato.

so che valore viene aggiornato e l'opzione esisto perché quando si esegue query per ottenere l'opzione Sto ottenendo il valore di:

global $wpdb; 
$query = 'SELECT * FROM wp_options WHERE option_name = "myplugin_option1"; 
$result = $wpdb->get_results($query); 

Questo mi restituisce il valore: "qualcos'altro"

Per esempio, questo codice:

$option = get_option("myplugin_option1"); 
if(false == $option){ 
    global $wpdb; 
    $query = 'SELECT * FROM wp_options WHERE option_name = "myplugin_option1"'; 
    $result = $wpdb->get_results($query); 
} 

Dopo l'esecuzione di questo codice, $ result conterrà valore:

Array 
(
    [0] => stdClass Object 
     (
     [option_id] => 11752 
     [option_name] => myplugin_option1 
     [option_value] => something else 
     [autoload] => yes 
    ) 
) 

Quindi l'opzione esiste e ha valore ma get_option() restituisce false.

Ho questo problema solo con 3 opzioni e solo su un sito in cui è installato il mio plugin. Qualcuno ha qualche idea del perché get_option() restituisca false anche l'opzione è nel database e ha valore "qualcos'altro".

risposta

1

Il problema con questo era che quelle tre opzioni con cui avevo problemi erano in qualche modo memorizzate nella cache due volte nella cache del wp.

Quindi una seconda opzione è stata memorizzata nella cache due volte e update_options() ha sempre aggiornato uno di questi due e get_option() ha sempre ottenuto l'altro memorizzato nella cache con valore vuoto.

Non so come sia successo, ma la cache di compensazione ha risolto il mio problema.

0

è necessario includere il file wp-blog-header.php in qualsiasi file esterno per poter utilizzare le funzioni di Wordpress. Quel file si trova nella cartella principale di wordpress.

+0

È incluso e le funzioni di wordpress funzionano correttamente. Ho il problema solo con l'opzione 3, per tutti gli altri funziona bene. Sto ottenendo le opzioni in un ciclo e solo quelli falliscono. – carpics

Problemi correlati