programing

word press get_option이 false를 반환함

stoneblock 2023. 2. 23. 22:00

word press get_option이 false를 반환함

다음과 같은 설정을 등록하는 워드프레스 플러그인이 있습니다.

register_settings("myplugin_settings","myplugin_option1");

플러그인 활성화 시 다음과 같은 옵션이 추가됩니다.

add_option("myplugin_option1","");

그런 다음 옵션을 업데이트하면 다음과 같이 됩니다.

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

나중에 데이터베이스에서 가져오기를 시도합니다.

$myoption = get_option("myplugin_option1");

get_option()은 false, 짝수 옵션이 존재하며 값이 갱신됩니다.

옵션을 얻기 위해 쿼리를 실행하면 다음과 같은 값이 표시되므로 값이 업데이트되고 옵션이 존재함을 알고 있습니다.

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

이 값은 "다른 것"을 반환합니다.

예를 들어 다음 코드입니다.

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

이 코드가 실행된 후 $result에는 다음 값이 포함됩니다.

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

따라서 옵션이 존재하며 값이 있지만 get_option()은 false를 반환합니다.

이 문제는 플러그인이 설치되어 있는 사이트와 3가지 옵션에서만 발생합니다.get_option() returns false even 옵션이 데이터베이스에 있고 값이 "other"인 이유를 알고 있는 사람이 있습니까?

문제가 된 3가지 옵션이 wp 캐시에 2번 캐시되어 있는 것이 문제였습니다.

따라서 1개의 옵션은 2회 캐시되었으며 update_options()는 항상 이 2개의 옵션 중 하나를 갱신하고 get_option()은 항상 빈 값으로 캐시된 다른 옵션을 가져옵니다.

어떻게 이런 일이 일어났는지는 모르겠지만 캐시를 지우면 문제가 해결되었습니다.

파일을 포함시켜야 합니다.wp-blog-header.phpWordpress 기능을 사용할 수 있습니다.이 파일은 워드프레스 루트 폴더에 있습니다.

언급URL : https://stackoverflow.com/questions/29909572/wordpress-get-option-returning-false