Get option

Одна из самых часто используемых функций в WordPress (сужу по себе и по тем темам, с которыми мне приходилось работать). Странно, что я описываю её у себя на блоге только сейчас.

$option_name
(строка) Название настройки. И сейчас я покажу вам несколько интересных методов относительно того, где брать эти названия.

Метод 1. Насколько вы знаете (а может и не знаете), настройки сайта хранятся в базе данных в таблице wp_options (префикс wp_ может отличаться). Открываем phpMyAdmin, выбираем нужную нам базу данных и переходим в таблицу wp_options.

Вот пожалуйста и все $option_name (понятное дело, на скриншоте не вся таблица, а лишь малая часть).

Метод 2. Благодаря ему вы можете узнать название любой настройки, какой захотите. Заходим на страницу настроек, например у меня тут Настройки > Общие, кликаем на интересующем вас поле правой и выбираем Проверить элемент (это в браузере Google Chrome, в других может и отличаться).

Значение HTML-атрибута name это как раз то, что нам нужно.

Метод 3 заключается в том, что я просто перечислю вам несколько основных значений настроек, которые мне самому приходится часто использовать и которые вы сможете получить при помощи этой функции.


  • admin_email — Основной емайл сайта, не тот, который в профиле пользователя администратора, а тот, который в общих настройках сайта.
  • blogname — Название сайта.
  • blogdescription — Описание сайта (Ещё один сайт на WordPress).
  • blog_charset — Кодировка сайта.

Всё. Ещё часто приходится получать URL-адрес сайта, но для этого я пользуюсь функцией site_url().

$default
(число|строка|массив|объект) Если вы хотите получить какую-то несуществующую опцию сайта, то функция get_option() либо возвращает false, либо то, что указано в этом втором параметре.

Примеры использования функции

Пример 1

При помощи функции wp_mail() отправляем письмо на основной емайл сайта.

Пример 2

Пробуем получить несуществующую настройку сайта, а если не получается, то выводим емайл администратора 🙂

Так как email обязателен для заполнения, я думаю, что там не нужно указывать значение по умолчанию.

Пример 3

То, с чем вы часто можете столкнуться в header.php
.

Хотя мне всё ещё трудно понять, почему кодировку не указываем статично — покажите мне сайт на WordPress не с UTF-8. Я конечно понимаю, что здесь не создаётся лишнего запроса к базе и значение берётся из кэша, но всё же.

Кстати, для подобных целей ещё часто используется функция get_bloginfo().

misha.blog

В случае сомнений посмотрите исходный код.

get_option() в get_option() , вы увидите (сокращенно):

  $value = wp_cache_get( $option, 'options' ); if ( false === $value ) { $row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) ); // Has to be get_row instead of get_var because of funkiness with 0, false, null values if ( is_object( $row ) ) { $value = $row->option_value; wp_cache_add( $option, $value, 'options' ); } else { // option does not exist, so we must cache its non-existence $notoptions[$option] = true; wp_cache_set( 'notoptions', $notoptions, 'options' ); return apply_filters( 'default_option_' . $option, $default ); } }    

Во-первых, WordPress проверяет, есть ли у него опция в памяти. По умолчанию wp_cache_get() будет извлекать значения из хранилища данных в памяти (обычно это просто переменная PHP). Но в некоторых установках используется более продвинутый кеш объектов, который хранит данные в другом месте.

В любом случае wp_cache_get()
вернет вам значение параметра, если WordPress уже это знает.

Если нет, то WordPress попытается извлечь его из базы данных. Если опция существует в БД, то WordPress будет кэшировать ее в памяти, а затем дать ей обратно – сделать последующий поиск быстрее.


Если этот параметр не существует в базе данных, WordPress помещает его во внутренний массив «эти параметры не существует», поэтому он не пытается искать его позже и возвращает значение по умолчанию.

Итак, чтобы ответить на ваш первоначальный вопрос:


Если я использую это 10 раз в различных функциях моего плагина, делает ли WordPress 10 запросов к базе данных или делает только один запрос на базу данных по HTTP-запросу и кэширует результаты?

WordPress будет делать 1 запрос базы данных по HTTP-запросу и кэшировать результаты.

www.wordpressask.com

   
<?php /** * Vamtam Post Options * * @package wpv * @subpackage honeymoon */ return array(array('name' => __('Layout and Styles', 'honeymoon'), 'type' => 'separator'), array('name' => __('Page Slider', 'honeymoon'), 'desc' => __('In the drop down you will see the sliders that you have created. Please note that the theme uses Revolution Slider and its option panel is found in the WordPress navigation menu on the left.', 'honeymoon'), 'id' => 'slider-category', 'type' => 'select', 'default' => '', 'prompt' => __('Disabled', 'honeymoon'), 'options' => WpvTemplates::get_all_sliders(), 'class' => 'fbport fbport-disabled'), array('name' => __('Show Splash Screen', 'honeymoon'), 'desc' =&.
der. You can place plain text or HTML into it.', 'honeymoon'), 'id' => 'page-middle-header-content', 'type' => 'textarea', 'default' => '', 'class' => 'fbport fbport-disabled'), array('name' => __('Full Width Header Featured Area', 'honeymoon'), 'desc' => __('Extend the featured area to the end of the screen. This is basicly a full screen mode.', 'honeymoon'), 'id' => 'page-middle-header-content-fullwidth', 'type' => 'toggle', 'default' => 'false'), array('name' => __('Header Featured Area Minimum Height', 'honeymoon'), 'desc' => __('Please note that this option does not affect the slider height. The slider height is controled from the LayerSlider option panel.', 'honeymoon'), '.
der.<br>If you want to use an image as a background, enabling the cover button will resize and crop the image so that it will always fit the browser window on any resolution.', 'honeymoon'), 'id' => 'local-title-background', 'type' => 'background', 'show' => 'color,image,repeat,size', 'class' => 'fbport fbport-disabled fbport-page'), array('name' => __('Sticky Header Behaviour', 'honeymoon'), 'id' => 'sticky-header-type', 'type' => 'select', 'default' => 'normal', 'desc' => __('Please make sure you have the sticky header enabled in theme options - layout - header.', 'honeymoon'), 'options' => array('normal' => __('Normal', 'honeymoon'), 'over' => __('Over the page content', .
; true, 'class' => 'fbport fbport-disabled'), array('name' => __('Page Title Background', 'honeymoon'), 'id' => 'local-page-title-background', 'type' => 'background', 'show' => 'color,image,repeat,size', 'class' => 'fbport fbport-disabled'), array('name' => __('Description', 'honeymoon'), 'desc' => __('The text will appear next or bellow the title of the page, only if the option above is enabled.', 'honeymoon'), 'id' => 'description', 'type' => 'textarea', 'default' => ''), array('name' => __('Show Body Top Widget Areas', 'honeymoon'), 'desc' => __('The layout of these areas can be configured from "Vamtam" -> "Layout" -> "Body". In Appearance => Widgets you populate them with widgets.', 'honeymoon'), 'image' => WPV_ADMIN_ASSETS_URI . 'images/header-sidebars-3.png', 'id' => 'show_header_sidebars', 'type' => 'toggle', 'default' => wpv_get_option('has-header-sidebars'), 'has_default' => true, 'class' => 'fbport fbport-disabled', 'only' => 'page,post,portfolio,product'), array('name' => __('Page Layout Type', 'honeymoon'), 'desc' => __('The sidebars are placed just below the page title. You can choose one of the predefined layouts.', 'honeymoon'), 'id' => 'layout-type', 'type' => 'body-layout', 'only' => 'page,post,portfolio,product,tribe_events,events', 'default' => 'default', 'has_default' => true, 'class' => 'fbport fbport-disabled'), array('name' => __('Custom Sidebars', 'honeymoon'), 'desc' => __('This option correlates with the one above. If you have custom sidebars created, you will enable them by selecting them in the drop-down menu. Otherwise the page default sidebars will be used.', 'honeymoon'), 'type' => 'select-row', 'selects' => array('left_sidebar_type' => array('desc' => __('Left:', 'honeymoon'), 'prompt' => __('Default', 'honeymoon'), 'target' => 'sidebars', 'default' => false), 'right_sidebar_type' => array('desc' => __('Right:', 'honeymoon'), 'prompt' => __('Default', 'honeymoon'), 'target' => 'sidebars', 'default' => false)), 'class' => 'fbport fbport-disabled'), array('name' => __('Page Background', 'honeymoon'), 'desc' => __('Please note that this option is used only in boxed layout mode.<br> In full width layout mode the page background is covered by the header, slider, body and footer backgrounds respectively. If the color opacity of these areas is 1 or an opaque image is used, the page background won't be visible.<br> If you want to use an image as a background, enabling the cover button will resize and crop the image so that it will always fit the browser window on any resolution.<br> You can override this option on a page by page basis.', 'honeymoon'), 'id' => 'background', 'type' => 'background', 'show' => 'color,image,repeat,size,attachment'), array('name' => __('Use Bottom Padding on This Page', 'honeymoon'), 'desc' => __('If you disable this option, the last element will stick to the footer. Useful for parallax pages.', 'honeymoon'), 'id' => 'use-page-bottom-padding', 'type' => 'toggle', 'default' => true, 'class' => 'fbport fbport-disabled'));

hotexamples.com

Syntax

The function gets the desired option’s value from the options database table and returns it, or in case the value is not found it returns FALSE. The function is called through PHP, similarly to the code snippet below:

 <?php echo get_option( $option, $default ); ?> 

You can easily see that it takes two parameters, namely $option and $default, though only the first one is obligatory.

The $default parameter is what you want the function to return in case the value you are searching for cannot be retrieved from the database. It is optional, and in case that you do not specify it, it will be FALSE by default.

The $option argument is obligatory, and with it you specify the option for which you want the database data. It can be a whatever, starting from admin_email, blogname, blogdescription and start_of_week to date_format, home, siteurl and users_can_register, all of which are located in the General Options.

The are other options such as blog_charset and posts_per_page, set in Reading Options, and also template, set in Presentation, which shows the current theme’s name. Of course, there are many more that the argument $options can be, both built-in and depending on the plugins you use.

Usage

You can use the get_option() function as a first step for whatever you need to do with the value of the option after retrieving it, be it just that or even attaching it to a variable and putting it out for your users to read.

You can display data about your blog using the code snippet below:

 <h1>Some option values of <?php echo get_option( 'blogname' ); ?></h1>   <p>Character set: <?php echo get_option( 'blog_charset' ); ?> </p>  <p>Blog Description: <?php echo get_option( 'blogdescription' ); ?> </p>  <p>Theme Name: <?php echo get_option( 'template' ); ?> </p>  <p>Site URL: <?php echo get_option( 'siteurl' ); ?> </p>  <p>Default Upload Location: <?php echo get_option( 'uploadpath' ); ?> </p>  <p>Date Format: <?php echo get_option( 'date_format' ); ?> </p> 

The function set in the h1 heading will put out the blog’s name. In the next part we have displayed other information about the blog, each characteristic put into a separate paragraph. Everyone of them is pretty self-descriptive. However you must note that the 'siteurl' will not return te homepage URL, but instead it will give you the same result as:

 get_bloginfo('wpurl'); 

This is how you use the get_option() function in WordPress.

Get Site Options?

It happens very often that the get_options() function gets confused with another very similar one: get_site_options().

These functions are almost the same in that they both return the options value, only get_site_options() will return the value of the network-wide option, when there is a multi-site installment. In non multi-site installments, they’re practically the same.

Syntax

The get_site_options() function is used like below:

 <?php get_site_option( $option, $default , $use_cache ) ?> 

You will notice that the first two arguments are the same as in get_option(). The only catch is that $option is not expected to be retrieved from the SQL. The only “extra” argument is $use_cache which takes a boolean value for whether to include the cache or not, and is by default set to TRUE. You might already guess that it has no effect on non multi-site installments.

Usage

Let’s see some very basic examples of this function:

 echo get_site_option( 'siteurl' ); 

This line of code would give us the network-wide value of the siteurl option.

 $value = get_site_option( 'this_is_not_an_option' ); $value = get_site_option( 'this_is_not_an_option', 'really?' ); 

In the first line, since this_is_not_an_option is not a valid option, we would get the default return value of FALSE. However, in the second line, this default value is replaced with really?. Which means that since the first argument is not valid, we will get a return value of really?.

Download the source code

This was an example of get_option in WordPress.

Download the source code for this tutorial:

www.webcodegeeks.com

Get option

В силу того, что большинство разрабатываемых мною сайтов создается с использованием CMS WordPress и приходится постоянно сталкиваться с нетривиальными задачами, решил делиться с вами опытом использования различных плагинов. Как бесплатных так и платных, причем попробую придерживаться такого формата: одна статья — один плагин. Постараюсь рассматривать только действительно заслуживающие внимания разработки, и вот в первом своем рассказе поведаю вам об OptionTree — прекрасное, на мой взгляд, решение для создания страницы с пользовательскими настройками сайта.

Шаблоны (темы) WordPress, которые мы можем использовать на своем сайте, очень часто позволяют настраивать какие-то дополнительные параметры, например, цвет заголовков. Все платные темы, которые мне приходилось использовать, существенно расширяют функционал административной панели за счет отдельного интерфейса. Ниже я привожу пример такого расширения, посмотрите, пожалуйста.

Get option

Когда создается уникальный сайт (под уникальностью я имею ввиду сайт, который использует разработанный специально для клиента шаблон с уникальным дизайном и функционалом), то зачастую требуется создать возможность для администраторов менять те или иные параметры. Почти всегда необходимо дать возможность изменять файл логотипа, какие-то элементы на главной странице, иконки социальных сетей, цвет фона в «подвале» сайта и т.д. Именно такую возможность для разработчиков предоставляет плагин OptionTree, который можно бесплатно скачать с официального сайта WordPress.

Установив и активировав плагин, мы, условно, получаем две части: одна для разработчиков сайта, другая — для пользователей. Первая часть доступна из пункта меню «OptionTree»-«Settings», который появляется после активации плагина слева в административной части WordPress. Смело жмем туда и получаем уникальный интерфейс для формирования набора пользовательских полей, который будет доступен для пользователей во второй части плагина — «Внешний вид» — «Theme Options».

Get option

Итак, как же создавать настройки? Под отдельной настройкой я буду иметь ввиду некоторое поле, которое будет доступно пользователю, администратору сайта для редактирования. UI Builder позволяет создавать секции или разделы, давайте назовем это лучше так, внутри которых будут располагаться те или иные настройки. На рисунке выше я привел пример настроек, состоящий из двух разделов: «Основное» и «Услуги». Т.е. подразумевается, что в разделе «Основное» будут размещены какие-то общие настройки сайта, а в разделе «Услуги» — специфичные для страницы услуг. Давайте посмотрим, как разделы выглядят для пользователя. Переходим во «Внешний вид» — «Theme Options» и — ура! Вот она страница настроек!

Get option

Слева мы видим разделы, которые можно переключать, справа — набор настроек внутри раздела. Разделы создаются с помощью Theme Options UI Builder по кнопке «Add section», и для раздела необходимо ввести его заголовок и уникальный идентификатор. Давайте создадим раздел «Дополнительно» и добавим туда несколько настроек.

Get option

Все изменения, конечно, фиксируются по нажатию на кнопку «Save Сhanges». Теперь добавим настройку для пользователя, ну, например, цвет заголовков. Нажимаем «Add setting» и, посмотрите, какой набор полей доступен для выбора. Можно сказать, огромный! Выберем «Colorpicker» и введем заголовок и уникальный идентификатор. Будьте внимательны с идентификаторами, именно по уникальному идентификатору затем в коде шаблона мы сможем получить доступ к значению этого поля.

Get option

Давайте посмотрим, что же теперь доступно пользователю для редактирования: появился новый раздел и новая настройка, поле «Цвет заголовков», которое пользователь удобным способом может теперь редактировать. Смотрите, я не буду останавливаться на полном списке доступных для создания полей, он есть, конечно же, в документации к плагину и на официальном сайте разработчиков. Если все же какие-то поля вызовут у вас интерес — напишите, я сделаю обновление этой публикации с описанием того или иного типа предлагаемых полей. В принципе, по названию поля понятен его смысл, но, повторюсь, если что-то вызовет у вас трудности — смело обращайтесь, обязательно поясню.

Get option

Теперь нам с вами, как разработчикам, необходимо внести изменения в шаблон сайта для того, чтобы получить значение того или иного поля, которое ввел или выбрал пользователь. За это отвечает некая функция, пример использования которой для нашего выбора цвета заголовков я привожу ниже. Причем, отмечу, что вариантов использования этого плагина может быть огромное множество, в приводимом мною примере внутри файла header.php шаблона в секции head документа будет выводиться теперь стиль заголовков, а именно, их цвет, в зависимости от значения поля h_color.

<head> 	<style> 		h1,h2,h3,h4,h5,h6 { 			color: <?php echo ot_get_option( "h_color"); ?>; 		} 	</style> </head> 

Т.е. за вывод значения поля отвечает функция ot_get_option( $option_id, $default ), параметрами которой являются идентификатор поля, который мы с вами, как разработчики, задаем сами, в нашем случае мы выводим значение поля h_color. Второй параметр функции — формат вывода, давайте на этом я остановлюсь чуть подробнее. Например, нам надо сделать опцию, которая позволит пользователю создавать свой набор иконок для социальных сетей. Для этого мы будем использовать поле List Item (на иллюстрации ниже).

Get option

Это поле позволяет создавать уже набор повторяющихся полей, когда пользователь сможет добавлять одинаковые параметры внутри одной настройки. Немного непонятно, постараюсь объяснить и затем в коде показать, как это работает. В нашем случае присвоим полю List Item идентификатор social_icons и внутри этого поля (обратите внимание, есть еще одна кнопка «Add setting») добавим два поля: файл иконки и ссылка. Тип первого поля будет Upload, тип второго — Text. Идентификатор первого поля будет icon_image, идентификатор второго — icon_link.

Get option

Что получит пользователь? Теперь он сможет добавлять несколько иконок социальных сетей, нажимая на кнопку «Add new» на странице настроек. Причем, обратите внимание, количество таких настроек теперь неограниченно и зависит только от пользователя.

Get option

Чтобы вывести теперь в шаблоне такое сложное поле, необходимо использовать немного другой формат вывода, ниже — кусочек кода на PHP для такого случая. Комментариями постараюсь пояснить, что происходит.

<?php if ( function_exists( 'ot_get_option' ) ) { // если плагин установлен 	// получаем значения поля social_icons как массив 	$icons = ot_get_option( 'social_icons', array() ); 	if ( ! empty( $icons ) ) { // если пользователь добавил настройки, т.е. массив не пустой  foreach( $icons as $icon ) { 		echo '<a href="'.$icon['icon_link'].'"><img src="' . $icon['icon_image'] . '" alt="' . $icon['title'] . '" /></a>'; // выводим в шаблон поля  }  } } ?> 

Типов полей, которые вы можете использовать, действительно много, разработчики плагина постарались на славу: это и выбор даты, выбор цвета, можно создавать галереи изображений, переключатели и т.д. Комбинируя такие поля и грамотно выводя их в шаблоне, разработчик сайта предоставит пользователю удобный интерфейс для изменения тех или иных настроек. Отмечу, что в одном из последних сайтов мне пришлось создать более 50 различных полей для того, чтобы клиенты смогли менять на сайте цвета заголовков, тексты на главной странице, изменять количество выводимых новостей на странице, редактировать контакты и карту проезда и множество других.

habr.com

У меня есть плагин wordpress, который регистрирует такие настройки, как:

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

Это возвращает мне значение: «something else»

Например, этот код:

 $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() возвращает false, даже опция находится в базе данных и имеет значение «что-то еще».

qaru.site

Magento 2 – get option label from drop down

You get option label from drop down the same way as Magento 1, with a getOptionText function. But step by step. First we need a product (get product by id):

Now you get the label with following line of code:

Where design_color is the name of my drop down attribute. With this simple code you get the label of the attribute which was set in product backend. In some special situation you may also want to get option id of a label or a label based on a known option id.

Get label based on option id

The value of a drop down product attribute is an option id. This is something you don’t want to display anywhere. With this internal database id you can get the corresponding value based on your local store. This works with the following code:

Get option id based on label

The other way round is also possible. Sometimes you know a label and want to get the option id.

Create new drop down product attribute

If you do not know how to create new drop down product attributes, here is a short tutorial.  Go to Stores –> Product. With button “Add New Attribute” you can define your own new product attribute. Lets create an additional color attribute:

get option label from drop down

Click save and your attribute will be created in database. The only thing you need to do now is to add it to your attribute set.

Conclusion

Working with option labels and option ids is not much different in Magento 2.

mage2-blog.com

WordPress Functions

Many of the core WordPress functions are useful to Plugin and Theme developers. The files of WordPress define many useful PHP functions. Some of the functions are designed specially for WordPress Themes, some for WordPress Plugins and rest are used to create core WordPress functionalities.There are other functions related get_option like add_option(), update_option(), delete_option() etc that you might be looking for. If that is the case, have a look at the list of WordPress functions to find out more functions. However, we further discuss the implementation and call of get_option.

Function get_option()

I strongly recommend you to go through the official documentation on get_option on.

The actual implementation of get_option looks like:


get_option( string $option, mixed $default = false )

Where:

$option is the option whose value we want to extract; and

the second argument forces the default value to be false.

These parameters are explained in detail below.

Parameters

  • $option

The first argurment passed to get_option is $option which takes the desired option you want. There are a lot of valid arguments that can be passed including:

  • 'admin_email' – E-mail address of blog administrator.
  • 'blogname' – Weblog title; set in General Options.
  • 'blogdescription' – Tagline for your blog; set in General Options.
  • 'blog_charset' – Character encoding for your blog; set in Reading Options.
  • 'date_format' – Default date format; set in General Options.
  • 'default_category' – Default post category; set in Writing Options.
  • 'home' – The blog’s home web address; set in General Options.
  • 'siteurl' – WordPress web address; set in General Options.
  • etc.
There are many more options available, a lot of which depend on what plugins you have installed.

  • $default

If the value of option is not found than the default value false will be returned.

Return Value

If the option does not exist or does not have a value, then the return value will be false. This is useful to check whether you need to install an option and is commonly used during installation of plugin options and to test whether upgrading is required.

If the option was serialized then it will be unserialized when it is returned.

Any scalar values will be returned as strings. You may coerce the return type of a given option by registering an ‘option_$option’ filter callback.

Source Code

The complete source code of get_option, its supporting functions and actual working algorirthms running in get_option can be found here.

Conclusion

In this article, we have discussed what does get_option() do, how to use it and where can you use it. get_option is one of the mostly used functions of WordPress. You may find other useful WordPress functions here. Hope you liked the article. Keep visiting artzstudio.

www.artzstudio.com


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector