Intereting Posts
Создайте короткий код, который создает форму для редактирования пользователями своей информации Запросить вложения по категориям и тегам, а затем ссылку привязки эха Что означает $ 2 $ 3? (Woocommerce) Как получить пользователя, принадлежащего к заказу? У меня есть 2 типа сообщений, я должен показать содержимое типа сообщения в двух блоках выбора Как я могу проверить, есть ли на определенной странице сгенерированной плагином или дочернем Отображение пользовательской таксономии в виде выпадающего меню на странице редактирования сообщений Восходящий порядок не работает в пользовательском типе сообщений Связанные сообщения: Уведомление: Неопределенное смещение: 0 Если пользовательское поле пуст, не отобразите div Как ограничить доступ к видео на прямой URL-адрес Не могу понять $ atts в функциях? Вопросы о грубых атаках на имя администратора, исходящие из IP-адресов Amazon Как я могу отправлять автоматические письма в многочисленные роли пользователей WordPress, когда настраиваемое поле обновляется в настраиваемом типе сообщений? Множественный флажок API настроек в общих настройках

Добавить вариант, если не существует

Мне нужно увидеть, есть ли опция, и если да, получите значение. Если нет, я должен добавить его.

Кодекс предусматривает:

<?php $option_name = 'myhack_extraction_length' ; $new_value = '255' ; if ( get_option( $option_name ) != $new_value ) { update_option( $option_name, $new_value ); } else { $deprecated = ' '; $autoload = 'no'; add_option( $option_name, $new_value, $deprecated, $autoload ); } ?> 

Что предположительно обновляет имя параметра myhack_extraction_length со значением 255. Если этот параметр не существует, используйте add_option и установите для автозагрузки значение no.

Однако мне кажется, что вторая половина может быть вызвана двумя способами, если опция не существует ИЛИ если новое значение == опция

Это верно?

Solutions Collecting From Web of "Добавить вариант, если не существует"

Логика на IF THEN ELSE выглядит несколько неловко. Если я правильно его читаю …

Вызов get_option ($ option_name) вернет FALSE, если опция не существует или если она не имеет значения.

Таким образом, IF будет выполнен:

  1. когда опция не существует и $ new_value! = FALSE
  2. опция не имеет значения и $ new_value! = FALSE
  3. опция существует и имеет значение, равное! = $ новое значение

Затем вызов update_option () обновит значение или создаст параметр с помощью $ new_value.

ELSE будет вызываться, если:

  1. опция существует и имеет то же значение, что и $ new_value
  2. опция не существует, а $ new_value == FALSE

Это проще, если опция не существует (или пустой). то есть:

 if(!get_option('speccc_nameee')){ update_option('speccc_nameee', 'first_default_value'); } 

Это верно?

Если вы имеете в виду «когда выполняется« if »и когда выполняется« else », тогда« Нет ». Посмотрите на условие: if ( get_option( $option_name ) != $new_value ) {

Если опция не существует – false != '255'true то выполняется первая часть. Он также выполняется, если опция существует, а значения не совпадают – '123' != '255'true .

Остальное выполняется только в том случае, если значения совпадают – '255' != '255' – false, так else часть else запускается. Они могут совпадать с чем угодно, цифрами, строками, логическими словами – иначе true или false

Я считаю, что лучший подход к этой проблеме – создать логику IF-ELSE, подобную этой:

  if(get_option('some_option')){ update_option('some_option', 'value_we_want_to_add'); } else { add_option('some_option', 'value_we_want_to_add'); } 

Логика: get_option () вернет TRUE, если этот параметр существует. В этом случае мы можем просто обновить эту опцию с некоторым значением, которое мы хотим добавить. Это делается update_option('some_option','value_we_want_to_add') . С другой стороны, если some_option не существует, get_option вернет FALSE и активирует ELSE-блок. Внутри остального блока мы дали инструкцию для создания этого «some_option» и присвоили нам значение.

При желании эту логику можно изменить в соответствии с более сложными требованиями.

Попробуй это

  1. Проверка функции, если $ arg / string / существует в mySQL.

  2. $ arg должен быть строкой / именем вашего параметра /

  3. Если функция возвращает true -> параметр существует; возвращает false -> с этим именем нет опции.

/ ** * Проверить, существует ли опция Exist; * @param String * @return boolean; * /

 function exist_option( $arg ) { global $wpdb; $prefix = $wpdb->prefix; $db_options = $prefix.'options'; $sql_query = 'SELECT * FROM ' . $db_options . ' WHERE option_name LIKE "' . $arg . '"'; $results = $wpdb->get_results( $sql_query, OBJECT ); if ( count( $results ) === 0 ) { return false; } else { return true; } } 

Пример:

 var_dump( exist_option( 'your_option' ) ); 

Результат:

true / false

Пример: (создайте вариант, если не существует):

 if( exist_option( 'your_option' ) == false ) { add_option( 'your_option', '255', '', true ); } 

И ваш ответ может быть следующим:

 $new_value = '255'; if( exist_option( 'myhack_extraction_length' ) == false ) { add_option( 'myhack_extraction_length', '255', '', true ); } else { if ( get_option( 'myhack_extraction_length' ) == $new_value ) { // Your Code Here: or return; } else { update_option( 'myhack_extraction_length', $new_value ); } }