Как определить, существует ли опция, но она пустая?
Я использую что-то подобное в одном из своих плагинов:
$myOption_def = "Значение по умолчанию для myOption";
$myOption = get_option( 'myOption' ) ? get_option( 'myOption' ) : $myOption_def;
Это работает нормально, но проблема в том, что мне нужно иметь возможность установить опцию в "пустое" значение. Когда я делаю это (из текстового поля на странице настроек плагина), я получаю значение по умолчанию вместо пустой строки, потому что get_option('myOption') возвращает одинаковый результат как для пустой опции, так и для несуществующей опции.
Как я могу определить, когда опция не существует (и тогда установить $myOption в значение по умолчанию), а когда значение опции пустое (и тогда установить $myOption в пустую строку)?

По сути, чтобы отличить логическое значение false
от пустой строки ''
, необходимо использовать более строгий оператор сравнения.
var_dump( '' == false ); // вернёт 'true', так как оба значения считаются 'empty()'
var_dump( '' === false ); // вернёт 'false', потому что значения хоть и 'empty()', но разного типа
Но это ещё не всё. Поскольку ваша задача довольно типична — функция get_option()
уже может сама предоставить значение по умолчанию. Таким образом, ваш код можно упростить до:
$myOption = get_option( 'myOption', $myOption_def );
Обратите внимание, что в этом случае пустая строка будет определена корректно, и значение по умолчанию не будет применено.

это единственно верный ответ, по моему мнению, надеюсь, мы получим это и для переменных запроса в ядре.

не делайте так, вместо этого сделайте, как предложил Rarst: $myOption = get_option( 'myOption', $myOption_def );
. Не нужно изобретать велосипед. Это уже есть в функции - значение по умолчанию для любой опции. Просто передайте его вторым параметром.
