Разрабатывая плагин интернет-магазина для WordPress, одна из задач, которою нужно было решить — добавить записи произвольного типа и подсчитать их количество. Задача вполне тривиальная. Но в дополнение к этому нужно было вывести количество записей в меню админки.

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

Было бы очень удобно, если заходя в админку, администратор сразу же видел о добавленных пользователями записях (кастомных комментариях, заказах, письмах и т.д.) и их количестве. На решении этой задачи и сосредоточимся. В результате поисков, нашлось два способа.

 

Способ 1: вывод количества через переменную

Этот способ я подсмотрел в одном плагине. Сразу хочется упомянуть минус этого способа — мы не сможем обернуть выводимое число в HTML теги, а значит не сможем красиво оформить. Итак, когда вы создали запись произвольного типа, ваш код выглядит примерно следующим образом:

Обратите внимание на пункт menu_name. Именно он отвечает за вывод надписи в боковом меню. В нашем коде newtypepostcount — переменная которая выводит число в меню админки. А type_name — это название вашего типа записей, theme_name — имя вашей темы или плагина, необходимо для локализации.

Кроме того, обратите внимание, что во время подсчета параметру numberposts мы задали значение «-1». Если мы не уберем ограничения вывода, то get_posts  ограничивается выводом 5 записями.

Способ 2: вывод с помощью javascript

Лично мне не очень нравится первый способ из-за отсутствия гибкости. Например, я не смогу оформить вывод результатов подсчета. Мне больше по душе второй способ, так как мы сможем завернуть число в html теги и достойно стилизовать.

Воспользуемся js. Наш скрипт должен размещаться после html блока, куда мы хотим вывести результаты подсчета. Воспользуемся функцией admin_footer_text для добавления скрипта в подвал админки:

Здесь код нуждается в небольших пояснениях. В строке 2 замените type_name на название вашей произвольной записи. В строках 6 и 9 замените родительский стиль menu-icon-type_name на свой. Например, он может принять вид: menu-icon-portfolio.

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

Если у вас есть более элегантное и гибкое решение, пишите в комментариях.

Добавить комментарий