Общие функции WordPress

16.05.2011

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

Навигация

Самые популярные функции WordPress – это навигация. Более старая wp_list_pages() и относительно свежая wp_nav_menu(), которую внедрили в версии 3.0. Начнем с wp_list_pages():

Вывод всех страниц блога

Если нужно вывести все страницы блога(обратите внимание, что понятия «страница» и «запись» не эквивалентны в WordPress) – используется функция wp_list_pages() без параметров. В таком случае вывод будет в алфавитном порядке.

<?php wp_list_pages(); ?>

Вывод определенных страниц блога
Как и другие функции, wp_list_pages() может работать с параметрами, которые действуют как фильтры. Чтобы включить в вывод только определенные страницы или, наоборот, исключить некоторые, используются параметры include и exclude соответственно.

php wp_list_pages('include=4,5');

Этот код включает вывод страниц с ID равным 4 и 5.

php wp_list_pages('exclude=4,5');

Этот код исключает из вывода страницы с ID 4 и 5.

Сортировка вывода страниц

Как я писал выше, сортировка страниц по умолчанию – в алфавитном порядке. Однако, можно настроить нужный порядок с помощью параметра sort_column, который может принимать одно из 7 значений:

  • post_title – Сортировка в алфавитном порядке (по умолчанию)
  • menu_order – вывод в заданном в настройках порядке
  • post_date – по дате создания
  • post_modified – по дате последнего изменения
  • ID – по идентификатору страницы
  • post_author – по автору
  • post_name – в алфавитном порядке по убыванию
php wp_list_pages('sort_column=post_date');

Этот код выводит страницы, отсортированные по дате публикации

Функция wp_nav_menu. Полный контроль над меню WordPress

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

<?php add_theme_support( 'menus' ); ?>

Дальше, в нужном месте шаблона, хедере или сайдбаре, вставить код вывода меню:

<?php wp_nav_menu( array('menu' => '[Menu Name]' )); ?>

где Menu Name – название вашего меню. Теперь заходим Внешний вид -> Меню, и настраиваем структуру навигации.

Вывод информации о блоге


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

Получение URL сайта

Допустим, URL вашего сайта — http://example.com и вы хотите использовать его в своей теме. Функция для вывода выглядит следующим образом:

<? php bloginfo ('url');?>

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

img src = "<?php bloginfo ('url');>/images/logo.png"/

Конечный результат выполнения данной функции выглядит так:

img src =" http://example.com/images/logo.png"/

Получение URL текущей темы оформления

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

<? php bloginfo ('template_url');?>

Получение URL RSS-канала

Собственно, все ясно из названия, функция возвращает URL вашего RSS-фида.

<? php bloginfo ('rss2_url');?>

Работа с контентом


Записи блога WordPress выводятся в цикле с определенными условиями. Базовый цикл вывода выглядит следующим образом:

<?php 
if ( have_posts() ) 
: while ( have_posts() ) 
: the_post(); ?>
<?php endwhile; 
endif; 
?>

Запрос записей
Первым делом, давайте рассмотрим самую важную функцию, query_post.Она используется для вывода тех записей, которые удовлетворяют условиям, которые мы передаем в запрос. Чтобы было понятнее, покажу на примере:

<?php query_posts('category_name=News&posts_per_page=5');>

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

Исключаем записи из выборки

Да, да, не все записи можно вывести… Для этого достаточно указать знак минуса(-) перед ID элемента, который нужно исключить. Аналогично можно поступить с категориями записей.

<?php query_posts('cat=-97,-34');?>

Этот код исключает из выборки категории с ID равным 97 и 34.

Идем дальше, рассмотрим функции, которые используются внутри цикла вывода записей.
Название записи:

<?php the_title();>

Показываем URL записи:

<?php the_permalink();>

Содержание записи:

<?php the_content();>

Анонс записи(то есть то, что идет до тега ):

<?php the_excerpt();>

Категория записи:

<?php the_category();>

Теги, используемые в этой записи:

<?php the_tags();>

Время публикации:

<?php the_time();>

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

, ,

Комментариев: 28

    • GerinG

      Вы, видимо, что-то перепутали. Я не вижу вашего адреса в списке

      Ответить
    • Williamgack

      Здравствуйте
      Как вам?
      Это многое значит как для меня, так и для прочих сценаристов, артистов и целых кто работал над сериалом. Мы любим мастерить шоу, и это приятно чувствовать от тех, кто уважает их осматривать. Канал в курсе, насколько небезразличных воздыхателей у сериала, вот отчего, к раскаянию, я не подозреваю, что разномастного рода петиции или билборды что-то переменят.

      Ответить
  1. Leonking

    Добрый день. Помогите решить вопрос: как можно вывести список постов рубрики. Сама функция wp_nav_menu выводит только рубрики, а мне хотелось бы что бы функция выводила и публикации рубрики. Как это нужно прописать в коде? Спасибо

    Ответить
  2. Melianora

    Спасибо за популярное разъяснение функций…
    Вам надо самому книгу писать.

    Ответить
  3. Pilikan

    Искал подобную выложеной вами таблицу функций на русском. Спасибо. только насколько я понял тут не все, основные так сказать. Все равно кодекс придется штудировать

    Ответить
    • Виктор Милашечкин

      Тут, безусловно, не все. Весь Кодекс уместить в небольшой пост — проблематично. Но основные моменты, которые используются в большинстве случаев — это есть. Плюс, шпаргалка для шаблонов, там тоже много чего описано

      Ответить
  4. Владимир

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

    Ответить
  5. Владимир

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

    Ответить
  6. akkad

    Напишите, пожалуйста, как вывести комментарии к конкретному посту. Есть функция wp_list_comments. только она вроде как для текущего поста выводит, а если я на странице другого поста хочу вывести список комментариев из другого, какие аргументы или переменные надо определить и как это сделать? Буду весьма благодарен за примеры.

    Ответить
    • Виктор Милашечкин

      Комментарии вообще отдельная тема. Тут писать не буду, сделаю отдельную статью, с примерами. Там можно будет обсудить подробнее, чтобы все стало ясно.

      Ответить
      • akkad

        буду ждать, хотя уже методом проб и тыка кое-что начинает получаться…

        Ответить
        • Виктор Милашечкин

          Все так начинали… А вообще, скажу по секрету — готовлю большой перевод платной буржуйской книги по WordPress. Естественно, бесплатно

          Ответить
  7. Вадим

    Все это, конечно, прописано в Кодексе WordPress и можно прочитать там, но все-таки спасибо автору, что систематизировал некоторые основные моменты и выложил на блюдечке.

    Ответить
    • GerinG

      Спасибо за отзывы… Приятно делать полезные для людей вещи

      Ответить
  8. Женя

    Статья то что надо, такие описания, по-моему, лучше многих курсов.

    Ответить
  9. Eugene Koltakoff

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

    Ответить
  10. ZeroXor

    Вот это мне очень нравится, когда советуют не «найти, скачать и поставить», а нормально все настроить «под себя и для себя»! Респект таким людям и уважение.
    А пост — в закладки определенно, потому как не так давно решил начать разбираться с WordPress. Уверен, что данная информация мне очень даже пригодится.

    Ответить