Удобная работа с произвольными полями с помощью плагина MaxSite – Произвольные поля

Удобная работа с произвольными полями с помощью плагина MaxSite - Произвольные поля | n-wp.ru

Тем, кто постоянно используют произвольные поля, может пригодиться плагин MaxSite – Произвольные поля. Этот плагин является переработанной разработчиком MaxSite CMS версией плагина Custom Field GUI, облегчающего добавление данных в определенные произвольные поля. Суть такова: вы записываете в отдельный текстовый файл названия произвольных полей, которыми хотите пользоваться постоянно, определяете их вид, условия использования, для некоторых задаете значения по-умолчанию, и плагин по вашим требованиям отображает в редакторе постов форму ввода данных. Таким образом вам не нужно вспоминать названия произвольных полей, а при определенных условиях не нужно даже вводить данные, достаточно только выбрать один из введенных вами вариантов. Такой подход очень удобен, если вам нужно практически в каждом посте использовать определенный набор произвольных полей.

Настройка файла conf.ini

Для начала вам нужно настроить специальный файл conf.ini, в котором содержатся данные о произвольных полях, которые нужно отображать в редакторе постов. Этот файл находится в папке плагина. Если его там нет – создайте (обычный текстовый файл в кодировке UTF-8). Например, он может иметь такой вид:

[Верхние страницы]
type = textfield
size = 60
mymeta = top_pages

[Избранный пост]
type = checkbox
default = checked
mymeta = izbran_post

[Выберите]
type = radio
value = 0-9 # 10-19 # 20+
default = 10-19
mymeta = vybor_radio

[Уровень]
type = select
value = High # Medium # Low
default = Low
mymeta = uroven

[Ваш текст]
type = textarea
rows = 5
cols = 60
mymeta = vash_text

Что в итоге увидит автор поста при его редактировании? Вот такую картину:

Удобная работа с произвольными полями с помощью плагина MaxSite - Произвольные поля (2)

Таким образом видно, что файл conf.ini отвечает за то, для каких произвольных полей в редакторе нужно выводить формы ввода, как они должны выглядеть, и какие данные в них можно сразу подставлять.

Например, код

type = textfield
size = 60
mymeta = top_pages

указывает плагину, что для произвольного поля top_pages форма ввода будет стандартным текстовым полем с размером 60 знаков по ширине и 1 знак по высоте.

Код

type = checkbox
default = checked
mymeta = izbran_post

указывает плагину создать произвольное поле izbran_post, которое может иметь значение checked или быть пустым. Вы можете только выбрать это значение, или же не использовать произвольное поле.

Код

[Выберите]
type = radio
value = 0-9 # 10-19 # 20+
default = 10-19
mymeta = vybor_radio

указывает плагину создать произвольное поле vybor_radio. По-умолчанию этому полю будет присвоено значение 10-19. Однако вы с помощью radio-переключателя можете выбрать одно из установленных значений: 0-9, 10-19 или 20+.

Код

type = select
value = High # Medium # Low
default = Low
mymeta = uroven

указывает плагину создать произвольное поле uroven, у которого может быть несколько значений: High, Medium или Low. По-умолчанию будет использоваться значение Low, но вы с помощью выпадающего списка можете выбрать и другое значение для этого произвольного поля.

Код

type = textarea
rows = 5
cols = 60
mymeta = vash_text

создает произвольное поле vash_text, в которое с помощью текстовой формы шириной 60 знаков и высотой 5 знаков можно ввести произвольный текст, например, код HTML.

Таким образом вы можете создать себе сколько угодно форм для ввода значений разных произвольных полей. Для одних вы можете заранее установить их значение, и выбирать с помощью радио-переключателей, чекбоксов или выпадающих списков, для других создать текстовые поля удобного размера, и вводить значение произвольного поля непосредственно в них, не прибегая к стандартному вводу произвольных полей в посте. Подход удобный, особенно если в блоге работают авторы, знакомые с тем, что такое произвольные поля, только понаслышке. Для них работа с нужными произвольными полями сводится к минимуму: достаточно выбрать нужные данные из предлагаемых. Вебмастерам тоже удобно пользоваться уже готовыми формами, в которых уже введены все нужные значения произвольных полей, и остается только выбрать нужное – это существенно увеличивает продуктивность работы.

Решение прикладной задачи

Например, нужно вывести в конце каждого поста или автора поста (если текст полностью авторский), или ссылку на источник материала (если текст скопирован), или автора используемого текста (если вы публикуете гостевой пост или частично используете чужой авторский текст).

Создадим несколько произвольных полей для ссылки на источник:

[Источник или Автор - анкор]
type = textarea
rows = 1
cols = 67
mymeta = source_anchor

[Источник или Автор - урл]
type = textarea
rows = 1
cols = 67
mymeta = source_url

Этот код выведет два текстовых поля, нужных для ссылки, указывающей на источник. В одно из них нужно ввести ссылку, а во второе – желаемый анкор (текст этой ссылки).

Теперь создадим переключатель, с помощью которого можно будет выбрать, что вы хотите видеть в конце поста: автора поста, ссылку на источник, или же автора текста, используемого в посте.

[Выберите]
type = radio
value = sourceblog # sourcesite # sourceauthor
default = sourceblog
mymeta = vybor_radio 

В итоге формы ввода значения нужных нам для этой задачи произвольных полей будут выглядеть так:

Удобная работа с произвольными полями с помощью плагина MaxSite - Произвольные поля (3)

Теперь нам осталось только составить условие:

  • если выбрать пункт sourcesite, то в конце поста выведется ссылка на источник (если текст был скопирован с другого сайта)
  • если выбрать пункт sourceauthor, то в конце будет указан автор текста (не автор поста, а автор текста, который использовался в посте)
  • если же выбрать пункт sourceblog, то в конце будет выведен автор текущего поста

В файл single.php нужно вставить код, выводящий при определенных условиях значение произвольных полей, описанных выше:

//получаем значение произвольного поля vybor_radio
 $val_val ) $position=$val_val; } ?> 

//если значение произвольного поля vybor_radio равно sourcesite, то выводим ссылку на сайт автора текста из произвольного поля source_anchor и урлом из произвольного поля source_url, а перед ней ставим слово Источник
 
    
Источник: <a title=" $val_val ) echo $val_val; } ?>" href=" $val_val ) echo $val_val; } ?>"> $val_val ) echo $val_val; } ?>
//если значение произвольного поля vybor_radio равно sourceauthor, то выводим ссылку на сайт автора текста из произвольного поля source_anchor и урлом из произвольного поля source_url, а перед ней ставим слово Автор
Автор: <a title=" $val_val ) echo $val_val; } ?>" href=" $val_val ) echo $val_val; } ?>"> $val_val ) echo $val_val; } ?>
//если значение произвольного поля vybor_radio равно sourceblog, то выводим ник автора данного поста, а перед ним ставим слово Автор
Автор:

Этот простой пример показывает, насколько удобно становится работать с произвольными полями, используя плагин MaxSite – Произвольняе поля.

[dl1 dlurl=”http://maxsite.org/page/ras30″ name=”MaxSite – Произвольняе поля”]
Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

12 Комментарии

  1. Спасибо за пример!
    Но вот сейчас проблема появилась. А как быть со старыми постами, где значения не выставлены? Не редактировать же каждый пост. :)
    Можно как то добавить такое исключение, к примеру если значения не выставлены, то просто отображать

    Автор: < ?php the_author(); ?>

    ?

      • На один вопрос вам ответили чуть выше – используйте условие:
        – если есть поле sourceauthor, то выводится его значение
        – иначе выводится автор

        • Сделал, как написали. Собственно получилось следующее. В functions.php вставил такой код:

          function avtor() {
          $my_meta = get_post_custom_values( 'vybor_radio', $ID ); if ( $my_meta) { foreach ( $my_meta as $val_key => $val_val ) $position=$val_val; } ?>
          < ?php if ( $position == 'sourcesite' ) : ?> $val_val ) echo $val_val; } ?>">< ?php $my_meta = get_post_custom_values( 'source_anchor', $ID ); if ( $my_meta) { foreach ( $my_meta as $val_key => $val_val ) echo $val_val; } ?>< ?php endif; ?>
          < ?php if ( $position == 'sourceauthor' ) : ?>< ?php $my_meta = get_post_custom_values( 'source_anchor', $ID ); if ( $my_meta) { foreach ( $my_meta as $val_key => $val_val ) echo $val_val; } ?>< ?php else: ?>
          < ?php the_author(); ?>
          < ?php endif;
          }

          В single.php вывожу автора или источник так:

          < ?php if (function_exists('avtor')) avtor(); ?>

          Файл conf.ini выглядит так:

          [Источник или автор]
          type = textarea
          rows = 1
          cols = 67
          mymeta = source_anchor
          
          [Выбор]
          type = radio
          value = sourceauthor # sourcesite
          mymeta = vybor_radio

          Думаю по коду видно почему я убрал часть кода из примера, ибо она больше не нужна.

          Ну и, собственно, проблема. Если выбрать sourceauthor и вписать автора, то всё ок, выводится тот автор, которого прописал. Если ничего не выбрать, но выводится автор стандартным

          < ?php the_author(); ?>

          Но вот если выбрать sourcesite, то выводится и источник, и вордпресовский the_author();. Вот примеры:

          Использование sourceauthor: http://ubuntovod.ru/instructions/nastrojka-hy-menu.html
          Использование the_author(): http://ubuntovod.ru/site-news/izmeneniya-na-ubuntovode-2-1.html
          Использование sourcesite: http://ubuntovod.ru/soft/libreoffice-3-5-4.html

          Автор выводится после статьи.

          Как быть?

  2. добавить условие которое будет проверять заполнено ли какое либо из полей:

    $my_meta = get_post_custom_values( 'vybor_radio', $ID ); if ( $my_meta) { foreach ( $my_meta as $val_key => $val_val ) $position=$val_val; } ?>
    < ?php if ( $position == 'sourcesite' ) : ?> $val_val ) echo $val_val; } ?>">< ?php $my_meta = get_post_custom_values( 'source_anchor', $ID ); if ( $my_meta) { foreach ( $my_meta as $val_key => $val_val ) echo $val_val; } ?>< ?php endif; ?>
    < ?php if ( $position == 'sourceauthor' ) : ?>< ?php $my_meta = get_post_custom_values( 'source_anchor', $ID ); if ( $my_meta) { foreach ( $my_meta as $val_key => $val_val ) echo $val_val; } ?>
    < ?php if ( !$position ) : ?>< ?php the_author(); ?>
    < ?php endif;
    
  3. Большое спасибо за статью. У меня возник вопрос. Допустим, я вывожу произвольное текстовое поле. Например, такое

    < ?php
    # выводим определенное произвольное поле
    $my_meta = get_post_custom_values( 'cena', $ID );
    if ( $my_meta)
    {
    echo '
    '; foreach ( $my_meta as $val_key => $val_val ) echo $val_val . ''; } ?>

    Мне необходимо, чтобы при определённом значении поля цена, например, “300”, у меня
    под полем с ценой отображался определённый текст, например, “в стоимость
    включена доставка”. То есть, если цена = “300”, то выводится текст “в стоимость
    включена доставка”, если цена = “200”, то выводится текст “без учёта доставки”.
    Как правильно это реализовать? Подскажите, пожалуйста. Заранее спасибо.

    • Ну примерно как-то так:

      < ?php $my_meta = get_post_custom_values( 'cena', $ID ); ?>
      < ?php if ($my_meta) : ?>
          < ?php 
              echo '
      '; foreach ( $my_meta as $val_key => $val_val ) echo $val_val . ''; ?> < ?php if ($my_meta < 300) : ?> < ?php echo '
      без учёта доставки'; ?> //если цена меньше 300 < ?php else : ?> < ?php echo '
      в стоимость включена доставка'; ?> //если цена 300 и больше < ?php endif; ?> < ?php endif; ?>
      • Не получилось что-то… Спрошу немного иначе. Выводим произвольное поле с гарантией.

        < ?php
        $my_meta = get_post_custom_values( 'garant', $ID );
        if ( $my_meta)
        {
        echo '

        Гарантия:

        '; foreach ( $my_meta as $val_key => $val_val ) echo $val_val . '

        '; } ?>

        Нужно сделать так, чтобы при гарантии “24 месяца” выводился “определённый текст”, а при гарантии “12 месяцев” выводился “другой текст”. То есть, если гарантия = (строго равно) “24 месяца”, выводится “текст1”. Если гарантия = “12 месяцев”, выводится “текст2”. Помогите, пожалуйста, разобраться. Заранее благодарю.

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*