Всем снова здравствуйте! Каждый владелец блога на CMS WordPress при написании поста или создании страницы может увидеть раздел «произвольные поля». О том, как можно использовать произвольные поля WordPress на практике, читайте далее.
Итак, произвольные поля WordPress могут пригодиться нам в случае, если Вы хотите отобразить любой текст, картинку и даже скипт-код. Вообще смысл произвольных полей заключается в том, что можно не вставлять весь текст/картинку/код в шаблон, а «записать» это в произвольное поле и вывести в любом месте шаблона используя всего одну строчку.
Давайте разберем конкретный пример.
Допустим, Вы хотите вставить баннер RotaBan, после всех записей с использованием произвольных полей.
Конечно, можно вставить код в том виде, в котором Вы получите на самом RotaBan в файл темы single.php, но тогда этот код займет много места. Можно воспользоваться плагином AdRotate и вывести рекламу тоже с помощью одной строки, но как Вам известно — чем меньше плагинов, тем быстрее блог.
Произвольные поля WordPress
В админпанели блога открываем любую запись, или любую страницу на редактирование, или добавляем новую.
Находим блок «произвольные поля«. Если вдруг по каким-то причинам произвольные поля не отображаются на странице редактирования записи/страницы, то включить произвольные поля можно в настройках экрана и поставить галочку напротив Произвольные поля:
Добавляем новое произвольное поле:
Даем ему название на латинском в левой части, а в правую часть вставляем код, или то, что хотим отображать. В нашем случае это код рекламы RotaBan.
Нажимаем Добавить произвольное поле.
Теперь после добавления нового произвольного поля задаем параметры его отображения в шаблоне. Делается это с помощью php-кода следующей конструкции:
fc407ce4a3d613607ecd357b74c54801000
Разберем переменные кода:
post_id – id поста, из которого берутся произвольные поля. Важно! Любое созданное произвольноге поле будет иметь привязку к конкретной записи/странице, поэтому если Вы хотите, чтобы произвольное поле отображалось на всех страницах бога, необходимо указать id поста/страницы в виде $post_id=’1304′, к которому привязано произвольное поле. А если укажите $post->ID, то произвольное поле будет отображаться только в записи, к которой оно принадлежит.
Чтобы узнать id записи/страницы, в админпанели войдите в список записей/страниц, и наведите на запись/страницу, к которой привязано произвольное поле, курсор:
В URL-адресе и будет содержаться id интересующей записи/страницы.
key – имя произвольного поля, в нашем случае rota-ban.
single – в основном используется значение true. false используется в случае отображения всего массива данных с произвольными полями.
В итоге для отображения произвольного поля с рекламой RotaBan мы будем использовать вот такой код:
1 | <?php echo (get_post_meta($post_id='1304', 'rota-ban', true)); ?> |
Добавляем данный код в файл темы single.php после контента, или перед контентом, в зависимости от того, где нужно отобразить рекламу.
Теперь немного о минусе произвольных полей. Минус произвольных полей заключается в том, что они создают дополнительный запрос к базе данных. То есть использование произвольных полей «разгрузит» файлы шаблона блога от лишнего кода, но создаст дополнительную нагрузку на базу данных.
Использовать, или нет произвольные поля WordPress — решать Вам.
Интереснинько. Нужно взять себе на заметку. Ведь и в правду код займет много места, а плагин начнет грузить сайт, а так все просто, и удобно.
Многие плагины используют произвольные поля. Разгрузив сайт, загрузишь базу данных.
До сих пор обходилась без произвольных полей. Возможно, что в каких-то случаях без них будет не обойтись (например, в случае выбора между плагином и произвольными полями я, возможно, выберу поля). Но пока такого выбора нет, так что спим спокойно
Имейте ввиду, что если произвольным полем плагин не заменить, придется выбрать плагин.
Может понадобиться. Спасибо.
А я этим не пользуюсь!
а где в БД эти поля прописываются чтоб значение можна было получить пхп скриптом
Не знаю, но при большом желании можно отыскать через поиск по БД.
Они точно заносятся в бд? я не могу их там отыскать
Точно! Просто больше некуда им заноситься!
Спасибо за статью!
Возник вопрос, как можно вывести произвольные поля в два столбика, если их, к примеру, много?
Смотря что содержится в этих самых произвольных полях…
А вообще можно с помощью таблицы, или css.
Добрый день! Вопрос, конечно, не по теме, но все же буду очень благодарен, если ответите… Какой шаблон Вы брали за основу того, что у Вас сейчас на сайте?
Тема называется mike. Историю переделки шаблона читайте в этой статье
Никита, большое спасибо за статью. Написано просто и понятно, ничего лишнего, с примерами… Надо было в произвольном месте вывести поля (на главную страницу блога) попробовал — получилось, сижу — любуюсь, довольный как слон
Вам спасибо! Заходите еще!
Обязательно. Подписался на RSS буду читать постоянно. Кстати, посоветовал бы сделать более явную RSS-подписку… на первый взгляд не нашел, пришлось классическим способом воспользоваться и дописать ручками feed вот так http://makoveckij.ru/feed/
Допустим, выводим произвольное поле с гарантией.
<?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». Помогите, пожалуйста, разобраться. Заранее благодарю.
Тут уже программирование php, или javascript. В этом не помогу к сожалению.
Основываясь на примере выше, попробуем его в действии. Добавим два настраиваемых поля, одно называется «Читаю сейчас», а другое «Сегодняшнее настроение». Следующие инструкции покажут, как добавить эту информацию в публикацию используя «Произвольные поля».
спасибо, статья очень полезная, тоже думаю, как использовать произвольные поля для отдельных постов и страниц.
У меня нет настроек экрана. Не подскажете, почему?
Попробуйте почистить кеш, или переустановить WordPress