ID WordPress страницы, поста, раздела, пользователя, тегов


Содержание материала:

Облагораживаем страницы меток и тегов в wordpress

Если не считать возможности таксономии, то в wordpress, по сути, можно выделить несколько «сущностей» — посты, страницы, категории и теги (метки). Классически первые 2 являются основными, в них публикуются тексты, куда можно добавлять ключевые слова, которые можно оптимизировать и т.п. При этом, страницы категорий, а еще чаще метки считаются дублированным контентом, от которого избавляются. Но можно поступить несколько иначе — я часто добавляю описание в категории wordpress блога дабы эти страницы также участвовали в привлечении пользователей из поисковиков. Допустим, у вас на сайте категория про автомобили и для нее пишете обзоры соответствующих машин. Совершенно логично для пользователя не знакомого с wordpress заходить на страницу раздела и видеть описание со списком статей — поэтому ни в коем случае не считаю категории дублированным контентом. То же самое, в принципе, можно сказать и про теги. Сегодня расскажу немного как можно облагородить эти страницы.

Дабы полностью рассмотреть вопрос со страницами тегов и меток выделим несколько этапов — редактирование меток, отображение описаний, ну и МЕТА теги для них. В каждом из них есть свои нюансы.

Итак, дабы добавить какой-то текст в метку (тег), нужно зайти в раздел «Записи» и выбрать пункт меню «Метки». Там увидите поля для названия, ярлыка и ее описание. По умолчанию поле описания будет обычным полем типа textarea для HTML формы. Дабы у вас было больше возможностей по вводу текста рекомендую поставить плагин Rich Text Tags — он добавляет графический редактор не только в поле описания тегов, но также поддерживает категории и таксономию.

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

Идем дальше, следующий шаг — заставить весь этот текст отображаться. По умолчанию для этого используется функция tag_description(). Ее синтаксис следующий:

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

Можно, конечно, сразу использовать echo для tag_description() без присвоения переменной, я просто указал дабы всем было нагляднее. Также при этом возникает 2 вопроса — что делать, если описание пустое и как быть со страницами тегов, когда их больше одной. В первом случае мы можем просто выводить информацию о странице либо же ничего не делать, во втором, безусловно, нужно отображать текст описания только на первой странице.

Для заходим в шаблон страницы архивов archive.php, где найдете перечень условий IF для каждого их типа архива — категорий, тегов, дней и т.п. Находите место обработки тегов — is_tag и грамотно(!) вписываете код по типу этого:

Выбранный тег —

Выбранный тег —

Здесь во первых проводится проверка на наличие страниц (is_paged), во-вторых, считывается описание в переменную $descr и смотрится пустая она или нет. В зависимости от тех или иных результатов получаем разные вывод текста на страницу — заголовок с описанием или без него.

Последним штрихом к странице меток можно считать добавление МЕТА тегов — тайтла, description и ключевых слов. Для этого можно воспользоваться плагином All-meta либо Category SEO Meta Tags. Первый скачать который можно здесь, но второй более новый и современный (см. статью по ссылке на плагин). Установка All-meta классическая — распаковываем плагин в директорию /wp-content/plugins/ и активируем в амдинке. После этого в разделе «Плагины» появится пункт All-meta.

Здесь для каждой категории и тега можно задать title, descriptions и keywords. Следует также заметить, что последних версиях наблюдается некая ошибка Warning: unserialize() expects parameter 1 to be string точнее это предупреждение — вреда сайту от этого нет, поэтому можно не обращать на нее внимания. Также при сохранении тегов у меня почему-то пропадают все описания, но если зайти на страницу плагина еще разок — все появляется, то есть в БД информация сохраняется. В любом случае после установки и добавления All-meta нужно тщательно посмотреть чтобы на сайте все корректно выводилось и работало.

В целом, если у вас есть время и желание добавить сайту немного больше качественных страниц, тогда облагораживанием категорий и меток — хорошее решение для этого. С помощью специальных плагинов (Rich Text Tags и All-meta) вы можете использовать для редактирования текстовый редактор и добавлять МЕТА теги. А для отображения описания тегов нужно лишь немного изменить код в шаблоне сайта.

WordPress.org

Русский

Поддержка → Проблемы и решения → Легкое редактирование id записей WordPress

Легкое редактирование id записей WordPress

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

Если у Вас возникло желание изменить ID — явный признак того, что Вы идёте не верным путём.
Если не хотите иметь проблем — никогда ничего не изменяйте в базе мимо ВП.

Владислав, я знаю что не верной, но к сожалению это нужно.

Не знаю кто такой «Владислав», но если бы Вы рассказали что Вы хотите сделать (не «изменить ID», а цель) — Вам бы наверняка подсказали правильный путь.

«Владислав» это подумалось «SeVlad» �� Я люблю обращаться к собеседникам по имени.
Да, боюсь, что мне как раз нужно поменять ID очень многих записей. Блог (очень древний) переехал на новый движок криво. Старым записям присвоился новый порядковый ID и наоборот. Нарушена «привычная глазу» ссылочная хронология. Глаз мозолит. И еще куча всего (не только про себя говорю). В общем надо менять.
Да я в базе меняю ID без проблем, но хотелось бы плагина. Уж очень муторно и долго.

Я люблю обращаться к собеседникам по имени.

В интернетах никнейм — это и есть имя. Имя, про которому собеседник желает, чтобы к нему обращались. Иначе почему бы не писать паспортные данные?
[/офтоп]

Да я в базе меняю ID без проблем

Если Вы так сделаете — Вы поломаете ещё больше. Может не всё сразу увидите, но аукнется обязательно.

А «всего»-то и нужно — корректно перенести данные.

Таблица wp_posts и колонка ID — auto_increment и любое необдуманное вмешательство приведет к геморою в дальнейшем. Не редактируйте айдишники, редактируйте тайтлы записи.
Я не могу все никак придумать:

Нарушена «привычная глазу» ссылочная хронология. Глаз мозолит

— как так может быть? В урл вас циферки не устраивают? Ну это же … бред.
Не обращайте внимание. Перфекционизм можно направить в полезное русло.

Топ-пост этого месяца:  Как сэкономить бюджет на контекстную рекламу с помощью B2B Click

Как узнать ID записи, страницы, рубрики, метки или пользователя в WordPress

Некоторые виджеты и плагины имеют настройки, основанные на указании >

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

Для записей и страниц — это параметр «post», в данном случае равный «1» для записи «Привет, мир!» и «2» для страницы «Пример страницы».

Для рубрик и меток — «tag_ID», в данном случае равный «1» для рубрики «Без рубрики» и «2» для метки «Тест».

Для пользователей — «user_id», в данном случае равный «2».

Такой способ не всегда удобен, поэтому мы можем добавить колонку ID с помощью плагина Show IDs. Переходим в раздел Плагины -> Добавить новый, вводим название плагина в поле поиска, жмем «Установить» и «Активировать».

Колонка ID появится сразу после активации плагина.

Произвольный тип записей в WordPress — register_post_types, register_taxonomy

О произвольных типах записей в Вордпрессе (CPT, Custom Post Types in WordPress), как создать и настроить, добавить категории и теги, как сделать вложенные URL /тип записи/рубрика/запись или http://example.com/post_type/category/post/ .
Тут также описывается, как расширить стандартный функционал WordPress, создав новые типы записей, которые можно использовать в различных целях: добавить собственное порфтолио, картотеку фильмов и музыки, каталог продукции, календарь событий, даже сделать свой небольшой интернет-магазин (потому что для большого лучше пользоваться готовыми решениями навроде WooCommerce) или социальную сеть, и много чего ещё в этом духе.
Вначале общая информация, дальше — частности.

О записях в WordPress: где хранятся в базе данных, и как их получить

Абсолютно все записи в WordPress, про которые чуть ниже, хранятся в одной таблице: wp_posts . Метаданные постов, например, данные из метабоксов Yoast SEO, хранятся в таблице wp_postmeta .

Приведу пример, как получить 10 записей типа post (стандартные Записи в панели администратора).
В общих чертах, данные особо запрашивать не надо. В шаблонах они уже предустановлены, например, в single.php данные по записи уже доступны для обработки в цикле

Если данные нужно получить где-то вне цикла или шаблона, используется запрос WP_Query

Данные можно получить посредством SQL запроса:

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

Предустановленные типы записей в WordPress: post, page, attachment, revision, nav_menu_item

Как вы, наверное, знаете, Worpdress имеет предустановленные типы контента: записи ( post ) и страницы ( page ). Есть ещё несколько предустановленных типов ( attachment — аттачменты: изображения, аудио, видео; revision — ревизии записей, по сути, черновики; nav_menu_item — элементы меню), но они больше служебные и вспомогательные. Далее речь о них.

Записи или посты (post)

Самая используемая единица из всех типов, что есть в WordPress — Записи (они же посты, post ). Используется в роли постов блога и тому подобного. Имеет 2 предустановленных таксономии: рубрики, они же категории ( category ) и метки, они же теги ( post_tag ).
Таксономии служат для сортировки и упорядочивания записей.
Рубрики отличаются от меток тем, что имеют древовидную структуру (могут быть вложенными друг в друга).
Метки являются независимыми друг от друга единицами и этим чем-то похожи на Записи .
Также, по умолчанию, из записей формируется RSS лента сайта на Вордпрессе.

Для Записей используются следующие файлы шаблонов (в порядке приоритета):

Файлы шаблонов ищутся сверху вниз по списку в порядке приоритета. Если файл шаблона найден в теме, используется он, а поиск прекращается.

Страницы (page)

Страницы используются, в основном, в роли служебных страниц, посадочных страниц — лендингов, сборника энциклопедии и тому подобного. Имеют древовидную иерархию, то есть могут быть вложенными друг в друга, что отразится в адресе конечной страницы (ярлыки родительских будут присутствовать в цепочке URL), и в этой роли имеется возможность выставить им приоритет в сортировке.
Чтобы сделать лендинг, вы можете пойти двумя путями:

Создаём специальный шаблон страницы (page)

Где-нибудь внутри темы в корне или её поддиректории создать файл с произвольным названием и расширением php , например, landing.php . Внутри вы можете разместить совершенно любой шаблон, который может быть абсолютно не похож на другие страницы сайта. Но главное, это поместить вот такой код в начало файла:

Template Name — это специальная метка, которая говорит WordPress о том, что этот файл — специальный шаблон.
Теперь при создании и редактировании любой страницы (page) посмотрите в блоке справа с названием Атрибуты страницы , в нём в разделе Шаблон вы можете выбрать наш уникальный лендинг.

Как настроить шаблон страницы

Для Страниц ( Page ) используется следующая иерархия шаблонов. Как и с Записями , указываю в порядке приоритета:

Прикрепления, вложения или аттачменты (attachment)

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

Получить вложения для последующей манипуляции над ними можно с помощью следующего кода:

Иерархия шаблонов для аттачментов:

Редакции, черновики или ревизии (revision)

Редакции , они же Ревизии — это версии черновиков записей, которые создаются автоматически, пока вы пишете статью в административной панели Вордпресса или сохраняете статью без фактической её публикации.
В процессе написания, для каждой статьи по умолчанию сохраняется каждая версия черновика. Можно сравнить две разные версии, и к нужной можно откатиться назад.
Хранить помногу версий одной и той же статьи — довольно накладно и часто бессмысленно (хотя, наверное, правильнее было бы оставлять всё по умолчанию, регулярно подчищая старые редакции с помощью плагина, например WP Optimize), поэтому число сохраняемых версий Ревизий можно изменить с помощью 2 вариантов:

  • true или -1 : сохраняет каждую версию черновика. Вариант по умолчанию
  • false или 0 : отключает сохранение черновиков, кроме 1 автосохранения
  • Целое число больше нуля: сохраняется указанное число версий черновиков + 1 автосохранение. Старые версии, не укладывающиеся в указанное число, автоматически удаляются

Элементы навигационного меню (nav_menu_item)

Навигационное меню ( nav_menu_item ) — это тип записей, который хранит информацию об единице навигации в WordPress. Первый, и пока единственный тип записи, который используется не как остальные типы записей, данные для работы и отображения на сайте получают свои отдельные функции.
Также, навигационные меню по умолчанию не включены. Чтобы их включить, нужно объявить об их поддержке в functions.php:

  1. Прописать
  2. Или зарегистрировать место под меню с помощью register_nav_menu(), тогда поддержка меню включится автоматически

Для получения данных пользуйтесь wp_nav_menu(), потому что WP_Query не будет работать, и это отличительная особенность типа постов nav_menu_item

Пользовательский Произвольный тип записи (Custom Post Type, CPT WordPress)

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

Здесь sheensay_product — это название нового типа записей. Оно не должно конфликтовать с другими в системе, об этом подробнее ниже.
Также, в этом варианте оно служит ярлыком этого типа записей, то есть присутствует в URL. Если же хотите указать другой ярлык, например продукция, делайте как на примере ниже

Как правильно подобрать название нового типа записи

В WordPress зарезервированы следующие названия, которые нельзя использовать в качестве имени нового типа записи:

Также, стоит воздержаться от использования префикса wp_ в начале названия, так как, возможно, это вызовет конфликты с будущими версиями ядра WordPress.
Лучше всего, если вы будете предварять названия произвольными префиксами, связанными с названием вашего сайта, продукта или бренда, например sheensay_product , тогда гарантированно избежите потенциальных конфликтов

Как сделать произвольную таксономию

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

Шаблоны для произвольных типов постов

Всё зависит от того, какого рода информация отображается. Вариантов может быть 3: шаблон конкретной записи, шаблон архивов записей и шаблон таксономий


Шаблон страницы записи

Перечисляются в порядке приоритета

<тип_поста>в нашем случае, здесь и далее — это sheensay_product

Шаблон архива записей

  1. archive-<тип_поста>.php
  2. archive.php
  3. index.php

Шаблон произвольной таксономии

  1. taxonomy-<имя_таксономии>—<имя_термина>.php
  2. taxonomy-<имя_таксономии>.php
  3. taxonomy.php
  4. archive.php
  5. index.php

Здесь имя_таксономии — это sheensay_product_type , а имя_термина — это ярлык той таксономии, что вы создадите в админке.

Как получить данные произвольного типа записей (Custom Post Type WordPress) и отобразить на сайте

Получить данные произвольного типа записей (Custom Post Type) в WordPress для отображения на сайте можно теми же способами, что и обычные Записи и Страницы

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

Готовый класс для создания произвольного типа записей с произвольной таксономией

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

Чтобы URL формировался, вы должны перейти в настройки постоянных ссылок /wp-admin/options-permalink.php и установить любой отличный от простого вид общих настроек

Как настроить структуру постоянных ссылок

Ниже сам код класса. Вы можете не вносить в него никаких изменений, а поменять ярлык типа записи можно в самом конце в строке new Sheensay_Product( ‘продукция’ );
Сам код пишется в MU Plugin или в functions.php. Первый вариант предпочтительнее, так как в этом случае, вы не потеряете доступа к контенту нового типа записей при смене активной темы.

Теперь в админке вы можете зарегистрировать новую продукцию и их типы

Custom Post Type в админке

Создание произвольного типа записей с помощью плагина Custom Post Type UI

Чтобы не писать код вручную, вы можете воспользоваться готовым плагином. Он довольно популярен, и на момент написания статьи имеет 500 тысяч скачиваний из официального репозитория WordPress.org

Скачать плагин Custom Post Type UI из официального репозитория WordPress.org

Иерархия шаблонов темы в WordPress

Ниже иллюстрация иерархии шаблонов, то есть как ищутся и подбираются подходящие шаблоны (template) внутри темы (кликабельно):

Иерархия шаблонов тем в WordPress

В заключение

Я постарался сжато пройтись по всем пунктам этой важной темы. Если что-то осталось непонятным, задавайте вопросы, статья будет дополняться новыми примерами.

Как узнать и получить >

Узнаём и получаем ID Вордпресс категорий

В предыдущей статье описал способ как вывести в WordPress похожие записи. В настройках плагина, который требуется для этого бывает нужным указать ID (уникальный идентификатор) категории.

В этой небольшой заметке опишу, где его вообще взять.

Узнать в WordPress >«Записи — Рубрики» и навести курсор мышки на нужную рубрику.

Теперь в строке состояния окна браузера (слева внизу или где-то ещё — зависит от браузера) вы увидите идентификатор данной рубрики (см. картинку ниже).

Так в WP можно узнать ID категории

В принципе, можно просто щёлкнуть на эту категорию и взглянуть на строку браузера:

Несложно понять, что ID категории в данном случае равен 23 (параметр tag_ID).

В общем-то, в WordPress таким образом можно узнать ещё и идентификаторы тэгов (меток), страниц и записей.

Получить >если запись относится к такой-то категории, то вывести заголовок красным цветом . Сделать это можно так:

  1. Открыть шаблон Single.php
  2. Найти там код, отвечающий за вывод заголовка. Обычно это что-то вроде
  3. И изменить его на такой:

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

Как узнать >

Довольно часто при работе с сайтом на WordPress нужно знать идентификатор (ID) страницы или поста. Идентификаторы страниц и постов могут пригодиться как при использовании плагинов, так и при работе с кодом шаблона. Но, несмотря на важность этого, узнать ID в WordPress не очень легко.

Давайте это исправим! В данной статье мы рассмотрим варианты нахождения идентификаторов (ID) контента на своем сайте WordPress, а также некоторые общие способы использования этих идентификаторов.

Что такое ID страницы или поста в WordPress?

Возможно, вы этого не знаете, но WordPress предоставляет каждому фрагменту контента свой уникальный идентификационный номер (ID). Это помогает WordPress отслеживать различный контент на сайте.

Всякий раз, когда WordPress должен взаимодействовать с контентом, он использует его идентификационный номер, чтобы найти каждый конкретный фрагмент контента. Это означает, что если вы делаете запрос к конкретному контенту, всегда используется его идентификатор.

Как найти ID страницы или поста в WordPress

Найти идентификатор страницы или поста в WordPress довольно просто, хотя и немного неявно. Самый простой способ – посмотреть на поле ссылки при редактировании поста или страницы в Консоли WordPress.

Перейдите в Консоли в Публикации (Posts) и откройте для редактирования нужный пост. ID поста вы найдете в URL-адресе страницы, на которой находитесь. Для постов и страниц вы должны увидеть часть ссылки вида post=НОМЕР . Где НОМЕР – это и есть ID поста/страницы.

Если вы используете кастомные типы постов, ID вы сможете узнать таким же образом.

Более сложный способ узнать ID поста подразумевает использование базы данных. Используйте, например, phpMyAdmin. Откройте базу данных, а затем откройте таблицу wp_posts (у вас может быть и другой префикс таблиц). ID поста указывается в столбце ID:

Как узнать идентификатор страницы или поста в WordPress с помощью PHP

И, наконец, вы можете использовать PHP код, чтобы узнать ID поста/страницы. В WordPress есть для этого соответствующая функция – the_ID() , которая поможет вам узнать числовое значение идентификатора поста. Эту функцию нужно использовать только внутри цикла (loop).

Пример использования кода в PHP-шаблоне активной темы:

Что дает информация о ID поста или страницы?

Теперь, когда вы знаете, как найти ID поста или страницы, как это вам поможет при работе с сайтом на WordPress? Есть пара общих способов применения этого знания.

  1. Вам нужно подключить CSS/JS файлы на определенных страницах

Если вам нужно добавить определенные стили CSS на конкретную страницу, вы можете использовать для этого такой примерный код в файле functions.php :

Здесь мы используем функцию is_single() , которая проверяет, что это одиночная страница, а также делает проверку по ID этой страницы.

Замените POST_ID на фактический номер нужной страницы (например, ‘4444’ ). А ниже добавьте желаемый код (например, подключения стилей или скриптов). Хук add_action добавит это подключение в раздел конкретного поста или страницы.

  1. Добавление в контент нужной страницы какого-то блока с информацией

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

Добавив условие, которое проверяет пост по его ID, вы сможете добавить какой-то блок с определенной информацией на нужную страницу.

Краткий итог

Бывали случаи, когда вам, вероятно, нужно было знать фактический идентификатор (ID) контента на вашем сайте на движке WordPress. Самый простой способ сделать это – посмотреть в URL-адрес при редактировании поста или страницы! Более продвинутые способы также рассмотрены в сегодняшней статье.

Если у вас есть что сказать по поводу данной статьи, используйте для этого форму комментирования ниже!

Как в WordPress вывести только отдельные теги к записям

Как отобразить в WordPress один или несколько тегов для записи (статьи, поста) или категории (раздела), которые принадлежат этой записи.

Стандартный вывод меток (тегов)

Для вывода всех тегов (меток) у сайта на WordPress есть стандартные конструкции и его разновидности.

Вывод через запятую всех меток, которые прикреплены к записи. Перед тегами будет заголовок «Метки»:

Меняем текст и разделитель:

Вывод тегов списком:

Нестандартный вывод меток (тегов)


Что если нужно вывести не все метки, а только некоторые из них?

Для этих целей подойдёт следующий код:

‘Название_тега1’,
‘slug_name2’ => ‘Название_тега2’,
);

// Массив для хранения совпадающих тегов
$found_tag = array();

// Разделитель между каждым тегом
$seperator = ‘ — ‘;

// Если у нас есть хоть один тег
if( has_tag( $find_tags ) ) :

// Перебираем массив тегов
foreach( $find_tags as $slug => $name ) :

// Если тег соответсвует перебору, добавляем к массиву данных
if( has_tag( $slug ) )
$found_tag[] = » $name «;

// Соединяем результаты вместе используя разделитель там где это требуется
echo ‘

В этом участке кода:

«Название тега» должно соответствовать заданному в WordPress. Если вписать другое название, данная метка не будет показана.

Отдельные PHP коды для вывода меток

Конструкция которая может понадобиться, если следует что-то вывести, когда у записи (поста) имеются теги и когда их нет:

Условные теги WordPress: наиболее полная подборка, пояснения

В статье — (в общем-то) полный список условных тегов WordPress с кое-какими пояснениями; ссылки на посты с примерами и т.п.

На этом сайте есть много статей, да и новые пишутся, в которых повествуется о полезных функциях WP, а эти функции, вебмастера частенько используют в купе с условными тегами, так что…

…будем изучать варианты и принципы отработки условных тегов Вордпресс. Однако, разбирая материал, приходилось ссылаться в недра codex.wordpress, чтобы читатель получил подробности… а это не очень удобно.

…а посему, хотя об этом расписано достаточно много в сети, решил опубликовать подборку условных тегов и у себя, снабдить некоторыми пояснениями и, в дальнейшем, при необходимости, ссылаться на этот пост…

WordPress >

Как то странно было по запросу wordpress >

ID категории/рубрики текущего поста/записи в WordPress:

get_category_link($categories[0]->term_id – ссылка на первую (если запись принадлежит нескольким), или единственную рубрику.

$categories[0]->name – название категории.

Данный способ помог решить задачу реализации кнопки возвращения в категорию (рубрику), находясь на странице записи. Здесь важным моментом является то, что вместо названия категории можно писать любой текст (например “Вернуться”), так как просто ссылку на категорию с названием можно получить более легкими способами с помощью одной переменной.

Произвольный тип записей в WordPress — register_post_types, register_taxonomy

О произвольных типах записей в Вордпрессе (CPT, Custom Post Types in WordPress), как создать и настроить, добавить категории и теги, как сделать вложенные URL /тип записи/рубрика/запись или http://example.com/post_type/category/post/ .
Тут также описывается, как расширить стандартный функционал WordPress, создав новые типы записей, которые можно использовать в различных целях: добавить собственное порфтолио, картотеку фильмов и музыки, каталог продукции, календарь событий, даже сделать свой небольшой интернет-магазин (потому что для большого лучше пользоваться готовыми решениями навроде WooCommerce) или социальную сеть, и много чего ещё в этом духе.
Вначале общая информация, дальше — частности.

О записях в WordPress: где хранятся в базе данных, и как их получить

Абсолютно все записи в WordPress, про которые чуть ниже, хранятся в одной таблице: wp_posts . Метаданные постов, например, данные из метабоксов Yoast SEO, хранятся в таблице wp_postmeta .

Приведу пример, как получить 10 записей типа post (стандартные Записи в панели администратора).
В общих чертах, данные особо запрашивать не надо. В шаблонах они уже предустановлены, например, в single.php данные по записи уже доступны для обработки в цикле

Если данные нужно получить где-то вне цикла или шаблона, используется запрос WP_Query

Данные можно получить посредством SQL запроса:

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

Предустановленные типы записей в WordPress: post, page, attachment, revision, nav_menu_item

Как вы, наверное, знаете, Worpdress имеет предустановленные типы контента: записи ( post ) и страницы ( page ). Есть ещё несколько предустановленных типов ( attachment — аттачменты: изображения, аудио, видео; revision — ревизии записей, по сути, черновики; nav_menu_item — элементы меню), но они больше служебные и вспомогательные. Далее речь о них.

Записи или посты (post)

Самая используемая единица из всех типов, что есть в WordPress — Записи (они же посты, post ). Используется в роли постов блога и тому подобного. Имеет 2 предустановленных таксономии: рубрики, они же категории ( category ) и метки, они же теги ( post_tag ).
Таксономии служат для сортировки и упорядочивания записей.
Рубрики отличаются от меток тем, что имеют древовидную структуру (могут быть вложенными друг в друга).
Метки являются независимыми друг от друга единицами и этим чем-то похожи на Записи .
Также, по умолчанию, из записей формируется RSS лента сайта на Вордпрессе.

Для Записей используются следующие файлы шаблонов (в порядке приоритета):

Файлы шаблонов ищутся сверху вниз по списку в порядке приоритета. Если файл шаблона найден в теме, используется он, а поиск прекращается.

Страницы (page)

Страницы используются, в основном, в роли служебных страниц, посадочных страниц — лендингов, сборника энциклопедии и тому подобного. Имеют древовидную иерархию, то есть могут быть вложенными друг в друга, что отразится в адресе конечной страницы (ярлыки родительских будут присутствовать в цепочке URL), и в этой роли имеется возможность выставить им приоритет в сортировке.
Чтобы сделать лендинг, вы можете пойти двумя путями:

Создаём специальный шаблон страницы (page)

Где-нибудь внутри темы в корне или её поддиректории создать файл с произвольным названием и расширением php , например, landing.php . Внутри вы можете разместить совершенно любой шаблон, который может быть абсолютно не похож на другие страницы сайта. Но главное, это поместить вот такой код в начало файла:

Template Name — это специальная метка, которая говорит WordPress о том, что этот файл — специальный шаблон.
Теперь при создании и редактировании любой страницы (page) посмотрите в блоке справа с названием Атрибуты страницы , в нём в разделе Шаблон вы можете выбрать наш уникальный лендинг.

Как настроить шаблон страницы

Для Страниц ( Page ) используется следующая иерархия шаблонов. Как и с Записями , указываю в порядке приоритета:

Прикрепления, вложения или аттачменты (attachment)

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

Получить вложения для последующей манипуляции над ними можно с помощью следующего кода:

Иерархия шаблонов для аттачментов:

Редакции, черновики или ревизии (revision)

Редакции , они же Ревизии — это версии черновиков записей, которые создаются автоматически, пока вы пишете статью в административной панели Вордпресса или сохраняете статью без фактической её публикации.
В процессе написания, для каждой статьи по умолчанию сохраняется каждая версия черновика. Можно сравнить две разные версии, и к нужной можно откатиться назад.
Хранить помногу версий одной и той же статьи — довольно накладно и часто бессмысленно (хотя, наверное, правильнее было бы оставлять всё по умолчанию, регулярно подчищая старые редакции с помощью плагина, например WP Optimize), поэтому число сохраняемых версий Ревизий можно изменить с помощью 2 вариантов:

  • true или -1 : сохраняет каждую версию черновика. Вариант по умолчанию
  • false или 0 : отключает сохранение черновиков, кроме 1 автосохранения
  • Целое число больше нуля: сохраняется указанное число версий черновиков + 1 автосохранение. Старые версии, не укладывающиеся в указанное число, автоматически удаляются

Элементы навигационного меню (nav_menu_item)

Навигационное меню ( nav_menu_item ) — это тип записей, который хранит информацию об единице навигации в WordPress. Первый, и пока единственный тип записи, который используется не как остальные типы записей, данные для работы и отображения на сайте получают свои отдельные функции.
Также, навигационные меню по умолчанию не включены. Чтобы их включить, нужно объявить об их поддержке в functions.php:

  1. Прописать
  2. Или зарегистрировать место под меню с помощью register_nav_menu(), тогда поддержка меню включится автоматически

Для получения данных пользуйтесь wp_nav_menu(), потому что WP_Query не будет работать, и это отличительная особенность типа постов nav_menu_item

Пользовательский Произвольный тип записи (Custom Post Type, CPT WordPress)

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

Здесь sheensay_product — это название нового типа записей. Оно не должно конфликтовать с другими в системе, об этом подробнее ниже.
Также, в этом варианте оно служит ярлыком этого типа записей, то есть присутствует в URL. Если же хотите указать другой ярлык, например продукция, делайте как на примере ниже

Как правильно подобрать название нового типа записи

В WordPress зарезервированы следующие названия, которые нельзя использовать в качестве имени нового типа записи:

Также, стоит воздержаться от использования префикса wp_ в начале названия, так как, возможно, это вызовет конфликты с будущими версиями ядра WordPress.
Лучше всего, если вы будете предварять названия произвольными префиксами, связанными с названием вашего сайта, продукта или бренда, например sheensay_product , тогда гарантированно избежите потенциальных конфликтов

Как сделать произвольную таксономию

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

Шаблоны для произвольных типов постов

Всё зависит от того, какого рода информация отображается. Вариантов может быть 3: шаблон конкретной записи, шаблон архивов записей и шаблон таксономий

Шаблон страницы записи

Перечисляются в порядке приоритета

<тип_поста>в нашем случае, здесь и далее — это sheensay_product

Шаблон архива записей

  1. archive-<тип_поста>.php
  2. archive.php
  3. index.php

Шаблон произвольной таксономии

  1. taxonomy-<имя_таксономии>—<имя_термина>.php
  2. taxonomy-<имя_таксономии>.php
  3. taxonomy.php
  4. archive.php
  5. index.php

Здесь имя_таксономии — это sheensay_product_type , а имя_термина — это ярлык той таксономии, что вы создадите в админке.

Как получить данные произвольного типа записей (Custom Post Type WordPress) и отобразить на сайте

Получить данные произвольного типа записей (Custom Post Type) в WordPress для отображения на сайте можно теми же способами, что и обычные Записи и Страницы

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

Готовый класс для создания произвольного типа записей с произвольной таксономией

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

Чтобы URL формировался, вы должны перейти в настройки постоянных ссылок /wp-admin/options-permalink.php и установить любой отличный от простого вид общих настроек

Как настроить структуру постоянных ссылок

Ниже сам код класса. Вы можете не вносить в него никаких изменений, а поменять ярлык типа записи можно в самом конце в строке new Sheensay_Product( ‘продукция’ );
Сам код пишется в MU Plugin или в functions.php. Первый вариант предпочтительнее, так как в этом случае, вы не потеряете доступа к контенту нового типа записей при смене активной темы.

Теперь в админке вы можете зарегистрировать новую продукцию и их типы

Custom Post Type в админке

Создание произвольного типа записей с помощью плагина Custom Post Type UI

Чтобы не писать код вручную, вы можете воспользоваться готовым плагином. Он довольно популярен, и на момент написания статьи имеет 500 тысяч скачиваний из официального репозитория WordPress.org

Скачать плагин Custom Post Type UI из официального репозитория WordPress.org

Иерархия шаблонов темы в WordPress

Ниже иллюстрация иерархии шаблонов, то есть как ищутся и подбираются подходящие шаблоны (template) внутри темы (кликабельно):

Иерархия шаблонов тем в WordPress

В заключение

Я постарался сжато пройтись по всем пунктам этой важной темы. Если что-то осталось непонятным, задавайте вопросы, статья будет дополняться новыми примерами.

Топ-пост этого месяца:  Защита информации c Softline
Добавить комментарий