2015-04-28 16 views
9

mam wordpress wtyczki, które zapisać ustawienia jak:wordpress get_option powrocie fałszywe

register_settings("myplugin_settings","myplugin_option1"); 

i aktywacji wtyczki to dodanie opcji, takich jak:

add_option("myplugin_option1",""); 

następnie, jeśli mogę zaktualizować opcji, takich jak:

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

i późniejsza próba uzyskania tego z bazy danych:

$myoption = get_option("myplugin_option1"); 

get_option() zwraca wartość false, istnieje jeszcze opcja i wartość jest aktualizowana.

wiem, że wartość jest aktualizowana i opcja istnieje, ponieważ po uruchomieniu kwerendy, aby uzyskać możliwość otrzymuję wartość:

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

to zwraca mi wartość: „coś innego”

Na przykład ten Kod:

$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); 
} 

Po ten kod jest wykonywany, $ wynik będzie zawierał wartość:

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

Tak więc istnieje i ma wartość, ale get_option() zwraca false.

Mam ten problem tylko z 3 opcjami i tylko w jednej witrynie, w której zainstalowana jest moja wtyczka. Czy ktoś ma jakiś pomysł, dlaczego get_option() zwraca false nawet opcja jest w bazie danych i ma wartość "coś innego".

Odpowiedz

1

Problem polegał na tym, że te trzy opcje, z którymi miałem problemy, były w jakiś sposób buforowane dwukrotnie w pamięci podręcznej wp.

Tak więc jedna opcja została buforowana dwukrotnie, a update_options() zawsze aktualizowała jedną z tych dwóch opcji, a metoda get_ (get) zawsze pobierała buforowaną z pustą wartością.

Nie jestem pewien, jak to się stało, ale wyczyszczenie pamięci podręcznej rozwiązało mój problem.

0

należy dołączyć plik wp-blog-header.php do dowolnego pliku zewnętrznego, aby móc korzystać z funkcji Wordpress. Ten plik znajduje się w folderze głównym wordpress.

+0

Jest wliczony w cenę, a funkcje wordpress działają poprawnie. Mam problem tylko z opcją 3, dla wszystkich innych działa dobrze. Dostaję opcje w jednej pętli i tylko te zawodzą. – carpics