Произвольные поля в WordPress: Советы, трюки и хаки. Часть 2

Этот пост является продолжением статьи Произвольные поля в WordPress: Советы, трюки и хаки. Часть 1.

А теперь перейдем к самой коллекции советов, трюков и хаков...

Использование Произвольных полей с условными операторами

Использование условных операторов должно быть обязательным и необходимым условием при отображении Произвольных полей в ваших статьях. На пример, если вы забыли заполнить какое-либо поле, то вместо его значения можно выводить любой контент по умолчанию. Посмотрите на пример ниже:

Использование Произвольных полей в качестве условных операторов

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

Как показать только те посты, где есть определенные Произвольные поля

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

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

Запрос вернет записи с произвольным полем music.

А если вы хотите, чтобы отобразились только те записи, где в произвольном поле music есть значение Eminem, тогда нужно оформить код следующим образом:

Как отобразить кнопку Digg в записях с определенным произвольным полем

Если вам нужно отображать известную кнопку Digg не во всех записях (допустим, что у вас не все записи попадают на главную страницу), а только в выбранных, то в этом случае вам пригодятся Произвольные поля.

Просто вставьте следующий код в файл single.php во внутрь цикла:

Чтобы в записях появилась кнопка Digg, нужно создать произвольное поле с именем “Digg” со значением “true”.

Источник: How to Add a Digg Button Using Custom Fields

По такому же принципу можно сделать кнопку Like для соц. сети Facebook.

Перезапись имени Гостевого Автора с помощью Произвольного поля

Если у вас в блоге есть гостевые статьи, и вы точно знаете, что их авторы отпишутся один-два раза, тогда вам на помощь придут Произвольные поля, где можно завести имя и фамилию автора.

Вставьте следующий код в файл functions.php:

И так, когда вы публикуете гостевую запись, не забудьте указать в произвольном поле guest-author имя и фамилию автора.

Пример:

Add guest author name with Custom Fields

Источник: How to rewrite Guest Author Name with Custom Fields in WordPress

Как отобразить Произвольные поля вне цикла

Если у вас появилась потребность отображать определенный контент вне основного цикла статьи, тогда вам на помощь прийдет следующий код:

В коде нужно поменять “Your-Custom-Field” на имя вашего произвольного поля.

Источник: How to Display Custom Fields outside the loop in WordPress

Как отобразить пользовательские Header, Footer и Sidebar с помощью произвольных полей

Header, Footer и Sidebar остаются одинаковыми во всех записях и страницах в WordPress. Но, если вы создаете уникальный дизайн и хотите, чтобы у вас были различные меню, заголовки, подвалы в каждой записи, тогда это можно реализовать с помощью произвольных полей. Откройте single.php или page.php и найдите следующий код:

Замените его на следующий:

Теперь, когда вы будете публиковать запись или страницу с уникальным сайдбаром, вам нужно будет добавить произвольное поле “sidebar” и указать в нем имя файла этого сайдбара. На пример, если вы укажете “wpbpage”, то отобразится sidebar-wpbpage.php, как новый сайдбар.

Custom Sidebar in WordPress using Custom Fields

Чтобы завести новый файл сайдбара, просто скопируйте код старого в новый и измените его по вашему вкусу.

Используя эту технику, вы можете изменить и header и footer.

Источник: Display Different Sidebar for Each WordPress Post

Управление RSS-лентой с помощью Произвольных полей

Если вам нужно показывать определенный контент только RSS-подписчикам, тогда вам и здесь помогут Произвольные поля. В первом примере мы вам покажем, как можно использовать Произвольные поля для отображения текста/объектов вашей RSS-ленты. Сначала откройте functions.php и вставьте следующий код в тэги php:

Теперь создайте Произвольное поле с именем “coolcustom” и добавьте для него любое значение. Вы можете добавить adsense рекламу или изображение и т.д.

С помощью второй техники мы покажем вам, как добавить дополнительный текст для заголовков статей в RSS. Это очень полезно, если в вашем блоге есть гостевые или спонсорские статьи.

Например, если ваша статья называется Start Microblogging in WordPress with Wumblr и это спонсорская статья, тогда вы можете изменить ее заголовок на Sponsored Post: Start Microblogging in WordPress with Wumblr. Тоже самое для гостевых статей и т.д.

Чтобы применить эту технику, откройте файл functions.php и добавьте в него следующий код:

Согласно коду выше, если у вас есть Произвольные поля с именем “guest_post” или “sponsored_post” и со значением “true”, тогда в заголовке статьи появится дополнительный текст.

Источник: Completely Manipulate Your WordPress RSS Feeds

Как установить срок действия вашей статьи

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

Для этого вставьте в цикл следующие строки кода:

Для того, чтобы код сработал, вам нужно добавить Произвольное поле “expiration” и в него добавить дату следующего формата: mm/dd/yyyy 00:00:00

Также вы можете использовать плагин Post Expiration.

Как сделать отображение статей индивидуальными с помощью Произвольных полей

Хотите, чтобы ваша статья отличалась от основной массы? Вы угадали, дизайн статьи можно поменять с помощью нового CSS класса, а новый класс мы добавим с помощью Произвольного поля.

Для начала создайте поле с именем “post-class” и добавьте в него имя класса. На пример, мы добавили имя “anniversary”. Затем в цикле пропишите следующий код:

Теперь вам нужно найти функцию post_class в вашем цикле и заменить ее код на следующий:

Кроме того, вы можете добавить новое имя класса через header. Просто откройте файл header.php и вставьте в него следующий код между тэгами head.

После этого создайте поле с именем “customstyle” и добавьте в него любой CSS текст. Например такой:

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

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

  • Custom Fields Template
  • More Fields


33 комментарий на “Произвольные поля в WordPress: Советы, трюки и хаки. Часть 2

  1. а можно ли отобразить пользовательские Header, Footer и Sidebar с помощью не произвольного поля, а с помощью какого то уникального тега. например если в статье забит тег «новость» отображать один сайдбар, если в статье этого тега нет, то стандартный сайтбар?

    Thumb up 0 Thumb down 0

    • Вот пример кода для сайдбара.

      Thumb up 0 Thumb down 0

  2. Здравствуйте, помогите пожалуйста реализовать одну идею!

    Суть идеи такова:

    Есть комментарии, поля для комментов: 1) ИМЯ; 2) ЕМЕИЛ; 3) должно быть поле к примеру НОМЕР (к примеру человек заполняет это поле в соответствии id-товара), после чего при заполнении данного поля оно должно выводиться рядышком с именеи автора комментариев после того как комментарий был опубликован!

    ...

    Thumb up 0 Thumb down 0

    • Вам скорее всего нужен плагин, расширяющий возможности комментаторов

      Посмотрите, например, на плагин customcomment

      Thumb up 0 Thumb down 0

        • автор плагина указал, что доп данные показываются только в админке, не для открытого доступа.

          видимо нужно искать аналогичный плагин.

          Thumb up 0 Thumb down 0

  3. Здравствуйте нужна помощь. Есть сайт в котором список новостей стоит в виде картинок и прям на картине в левом нижнем углу нужно поставить номер картины. Как можно это реализовать с помощью произвольных полей?

    Thumb up 0 Thumb down 0

    • У вас простой случай (если только вам не нужно заменять старую картинку на новую с числом). У вас просто будет следующая выборка:

      Там где нужен номер, в статью добавляете произвольное поле number со значением номера. Далее в цикле, где у вас показываются статьи в виде картинок добавляется элемент span с нужным номером. С помощью CSS загоняете этот span в нужное место картинки. Вот и все.

      Thumb up 0 Thumb down 0

  4. Здравствуйте!

    Я пытаюсь сделать вывод постов из Вордпресса на внешнюю php-страницу, и для этого использую query_posts. Но из-за далеко не самых обширных знаний не могу правильно отобразить миниатюры и заголовки записей.

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

    Задача сделать так.

    Думаю, нужно как-то покрутить подключаемый CSS, но совсем не знаю, как именно. Спасибо.

    Thumb up 0 Thumb down 0

    • css файл прикручивается в header.php, там же прикручиваются и основные стили и js скрипты для сайта.

      Thumb up 0 Thumb down 0

  5. А у меня немного другая задача, не могу решить...

    Есть произвольные поля, выводятся они в тему через плагин «Произвольные поля в записях», т.е. в записи пишу просто [meta blablabla] и вставляется содержимое этого поля.

    Как можно сделать так, чтобы вывод какого то поля был только например для пользователя admin?

    Можно ли использовать php прямо в HTML коде записи?

    Thumb up 0 Thumb down 0

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

      Например в плагине Shortcodes Ultimate есть шорткод members.

      Т.е., например, если вы напишите в записи так

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

      Исходники можно подредактировать под свои требования.

      Thumb up 0 Thumb down 0

  6. query_posts ('meta_key=music&meta_value=Eminem');

    Очень пригодилась, неделю ломал голову, Даже свой sql запрос писать начал))))

    Молодец, сайт в закладках!

    Скажи такое, а вдруг и еминем и к примеру рихана) Можно двоих забить в одно поле, но вытаскивать запись у каждого из них по отдельности?

    Thumb up 0 Thumb down 0

      • Я немного не про то)

        Допустим я в доп поле загнал Eminem,Rihanna

        а на странице Eminem и отдельно на странице Rihanna вывожу посты к которым создал поле)

        Thumb up 0 Thumb down 0

        • не понимаю вас)

          для страницы еминема пропишите

          query_posts ('meta_key=music&meta_value=Eminem');

          для страницы риханы

          query_posts ('meta_key=music&meta_value=Rihanna');

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

          Thumb up 0 Thumb down 0

  7. то есть если я создам одно поле и впишу туда Eminem,Rihanna то сработает

    query_posts ('meta_key=music&meta_value=Eminem');

    query_posts ('meta_key=music&meta_value=Rihanna'); ?)

    Thumb up 0 Thumb down 0

    • одно поле = одно значение.

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

      Thumb up 0 Thumb down 0

  8. Помогите!!! как сделать отображение определённых Произвольных полей только для зарегистрированных пользователей??

    Thumb up 0 Thumb down 0

      • случай не тот. мне нужно именно в файле шаблона скажем Single Post (single.php), с помощью php-функции или php-кода, скрыть от незарегистрированных пользователей — группу произвольных полей вида:

        ID, 'ключ', true)); ?>

        ID, 'ключ', true)); ?>

        и вопрос в том есть ли какая php-функция или php-код для подобной манипуляции???

        Thumb up 0 Thumb down 0

  9. Добрый день!

    делаю свой первый блог на WP. Очень полезная статья, как раз искала такую, чтобы научиться редактировать шаблон до неузнаваемости. Я подобрала шаблон с хорошим функционалом, как мне кажется. Но у него нет header. Есть ли возможность это в этом шаблоне сделать и как это сделать лучше? Хотя бы намек, в какую сторону двигаться.

    Блог: lf.16mb.com

    Thumb up 0 Thumb down 0

  10. У меня несколько вопросов:

    1) как сделать так чтобы в случае не заполнения выбранного поля статья не публиковалась??

    2)Как настроить, чтобы при создании статьи сразу добавлялось нужное мне поле ??

    Thumb up 0 Thumb down 0

  11. Здравствуйте, не подскажите как можно реализовать таким образом расширенный поиск? Т.е. создать блок в шаблоне где можно будет выбрать необходимые параметры такие как например цена, категория и пару произвольных полей, нажать кнопочку и получить результат.

    Thumb up 0 Thumb down 0

  12. Вы написали «Как отобразить Произвольные поля вне цикла», а как мне сделать такую ссылку, чтобы переходило на страницу с контентом с определенным произвольным полем?

    Thumb up 0 Thumb down 0

  13. не засоряйте эфир, есть много учебного материала — учитесь и будет Вам good!!!

    Thumb up 0 Thumb down 0

  14. Я сделал три поля, а функцию их вывода заключил в блоки div и придал ему стиль оформления CSS:

    ID, 'price_name', true)); ?>

    В полях выводится текст, там стоит padding, заданы высота и ширина.

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

    Thumb up 0 Thumb down 0

  15. Подскажите, пожалуйста, как вывести Contact Form 7 средствами произвольного поля. Мне нужно вывести разные формы связи на разных страницах, но не в поле с обычным текстом (шорткодом), а в подвале...

    Thumb up 0 Thumb down 0

  16. Допустим, выводим произвольное поле с гарантией.

    <?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». Помогите, пожалуйста, разобраться. Заранее благодарю.

    Thumb up 0 Thumb down 0

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