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

Статья со звездочкой, для тех кто уже работает «Как вывести в записи колонку с произвольным полем и сделать по ней сортировку»

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

Как сделать дополнительный столбик в списке постов WordPress и настроить по нему сортировку.

Для начала вам нужен будет фильтр manage_{$screen->id}_sortable_column вместо $screen->id вам будет необходимо указать имя типа данных, ниже вы увидите на примере это.

Фильтр передает массив с именами сортируемых столбцов в качестве ключей, и данные для вывода как значение. Параметр «orderby» указывает, для каких столбцов будет включена сортировка. Также вы можете отключить сортировку для определенных столбцов «unsortable».

Яснее все будет рассмотреть на примере создания столбца

Фильтр manage_posts_columns вызывает функцию  posts_column_views() которая создает колонку Views для типа данных post, тип данных правильно указывать в названии функции manage_{post_type}_columns.

Экшен manage_posts_custom_column вызывает функцию posts_custom_column_views() которая отвечает за заполнение нового столбца данными. В названии экшена мы можем видеть также указанный тип данных manage_{post_type}_custom_column. Мы можем видеть что в функции заполнения вызывается другая функция которая передает ей данные getPostViews().

Рассмотрим функцию getPostViews()

Функция определяет 2 переменные $count_key и $count. В переменную $count_key мы вложили название будущего произвольного поля которое будет хранить количество просмотров страницы. В переменную $count мы получаем старое содержимое произвольного поля.

Если в переменную $count мы получили пустое значение или она скорее всего попросту не существует. Если переменная оказалась пустой, то мы создаем кастомное поле для текущего поста и вкладывает в него нулевое значение «0 View».

Функция которая увеличивает показатель просмотров на 1 при просмотре страницы

Далее для того чтобы добавлять новые значения было бы отлично вложить в код шаблона, в файл single.php, так как именно он отвечает за вызов функции в записях типа Post.

В начале функции мы объявляем переменные, о которых говорили ранее, поэтому что в них храниться читайте выше.

Далее если счетчик не создан, функция его создает и кладет первое значение в произвольное поле счетчика. Если переменная $count непустая, то мы берем ее значение и увеличиваем его на 1.

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

Добавляем сортировку к колонке в WordPress

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

Фильтр manage_edit-post_sortable_columns указывает что наша колонка может сортироваться. Ниже я добавил закоментированую строчку кода, с помощью которой вы можете наоборот отключать сортировку нужной строки.

В экшене pre_get_posts я вызываю функцию my_view_orderby(). Рассмотрим ее построчно.

  1. Сначала мы проверяем был ли пользователь залогинен.
  2. Если пользователь залогинен, то берем параметр запроса «orderby».
  3. Если параметр «orderby» вернул название нашей колонки ‘post_views’, то мы указываем по какому произвольному полю сортировать и тот момент, что сортировка должна быть по числовым данным.

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

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

Купить хостинг WordPress

Читайте также:

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Шаблоны для WordPress
Самый лучший хостинг в Украине
Стабильный хостинг для Drupal