WP_List_Table

Базовый класс для отображения списка элементов в HTML-таблице с поддержкой AJAX
Класс WordPress
INT 3.1.0
WordPress Icon
Содержание
  1. Описание класса
  2. Методы
  3. ajax_response()
  4. ajax_user_can()
  5. bulk_actions()
  6. column_cb()
  7. column_default()
  8. comments_bubble()
  9. current_action()
  10. display()
  11. display_rows()
  12. display_rows_or_placeholder()
  13. display_tablenav()
  14. extra_tablenav()
  15. get_bulk_actions()
  16. get_columns()
  17. get_column_count()
  18. get_column_info()
  19. get_default_primary_column_name()
  20. get_items_per_page()
  21. get_pagenum()
  22. get_pagination_arg()
  23. get_primary_column()
  24. get_primary_column_name()
  25. get_sortable_columns()
  26. get_table_classes()
  27. get_views()
  28. get_views_links()
  29. handle_row_actions()
  30. has_items()
  31. months_dropdown()
  32. no_items()
  33. pagination()
  34. prepare_items()
  35. print_column_headers()
  36. print_table_description()
  37. row_actions()
  38. search_box()
  39. set_pagination_args()
  40. single_row()
  41. single_row_columns()
  42. views()
  43. view_switcher()
  44. _js_vars()
  45. __call()
  46. __construct()
  47. __get()
  48. __isset()
  49. __set()
  50. __unset()
  51. Примеры использования
  52. Генерация таблицы с использованием класса WP_List_Table
  53. Отображение комментариев в виде пузыря
  54. Формирование навигации над таблицей
  55. Отображение дополнительных элементов управления
  56. Групповые операции с элементами таблицы
  57. Вопросы и ответы
  58. Как добавить новую колонку в WP_List_Table?
  59. Как сделать колонку сортируемой в WP_List_Table?
  60. Как изменить количество элементов на странице в WP_List_Table?
  61. Как добавить действия над строками в WP_List_Table?
  62. Как изменить стиль таблицы в WP_List_Table?
  63. Как добавить фильтры над таблицей в WP_List_Table?
  64. Как изменить порядок сортировки в WP_List_Table?
  65. Как добавить пагинацию в WP_List_Table?
  66. Как добавить поиск по таблице в WP_List_Table?

Описание класса

Класс WP_List_Table является базовым классом для отображения списка элементов в HTML-таблице с поддержкой AJAX. Он предоставляет удобный способ создания и отображения таблицы с данными, позволяя разработчикам легко настраивать и расширять функциональность таблицы.

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

Класс WP_List_Table является абстрактным классом, поэтому он не может быть использован напрямую. Он должен быть расширен другими классами, которые определяют конкретную таблицу со своими данными и логикой обработки.

Методы

  • __call — Делает приватные/защищенные методы доступными для чтения для обратной совместимости.
  • __construct — Конструктор.
  • __get — Делает приватные свойства доступными для чтения для обратной совместимости.
  • __isset — Делает приватные свойства доступными для проверки наличия для обратной совместимости.
  • __set — Делает приватные свойства доступными для установки для обратной совместимости.
  • __unset — Делает приватные свойства доступными для удаления для обратной совместимости.
  • _js_vars — Отправляет необходимые переменные в JavaScript.
  • ajax_response — Обрабатывает входящий AJAX-запрос (вызывается из admin-ajax.php).
  • ajax_user_can — Проверяет разрешения текущего пользователя.
  • bulk_actions — Отображает выпадающий список массовых действий.
  • column_cb
  • column_default
  • comments_bubble — Отображает счетчик комментариев.
  • current_action — Получает текущее выбранное действие из выпадающего списка массовых действий.
  • display — Отображает таблицу.
  • display_rows — Генерирует строки таблицы.
  • display_rows_or_placeholder — Генерирует элемент tbody для списка таблицы.
  • display_tablenav — Генерирует навигацию таблицы над или под таблицей.
  • extra_tablenav — Отображает дополнительные элементы управления между массовыми действиями и пагинацией.
  • get_bulk_actions — Получает список доступных массовых действий для этой таблицы.
  • get_column_count — Возвращает количество видимых столбцов.
  • get_column_info — Получает список всех, скрытых и сортируемых столбцов с примененным фильтром.
  • get_columns — Получает список столбцов.
  • get_default_primary_column_name — Получает имя столбца по умолчанию.
  • get_items_per_page — Получает количество элементов для отображения на одной странице.
  • get_pagenum — Получает номер текущей страницы.
  • get_pagination_arg — Получает аргументы пагинации.
  • get_primary_column — Получает имя основного столбца.
  • get_primary_column_name — Получает имя основного столбца.
  • get_sortable_columns — Получает список сортируемых столбцов.
  • get_table_classes — Получает список CSS-классов для тега таблицы WP_List_Table.
  • get_views — Получает список доступных представлений для этой таблицы.
  • get_views_links — Генерирует ссылки представлений.
  • handle_row_actions — Генерирует и отображает ссылки действий для строки таблицы.
  • has_items — Определяет, есть ли элементы для отображения в таблице или нет.
  • months_dropdown — Отображает выпадающий список для фильтрации элементов в таблице по месяцу.
  • no_items — Сообщение, которое будет отображаться, когда нет элементов.
  • pagination — Отображает пагинацию.
  • prepare_items — Подготавливает список элементов для отображения.
  • print_column_headers — Выводит заголовки столбцов, учитывая скрытые и сортируемые столбцы.
  • print_table_description — Выводит описание таблицы с информацией о текущей сортировке и порядке.
  • row_actions — Генерирует необходимый HTML для списка ссылок действий строки таблицы.
  • search_box — Отображает поле поиска.
  • set_pagination_args — Устанавливает все необходимые аргументы пагинации.
  • single_row — Генерирует содержимое для одной строки таблицы.
  • single_row_columns — Генерирует столбцы для одной строки таблицы.
  • view_switcher — Отображает переключатель представлений.
  • views — Отображает список доступных представлений для этой таблицы.

Методы

ajax_response()

Метод ajax_response() является частью класса WP_List_Table и предназначен для обработки входящего ajax-запроса, который вызывается из файла admin-ajax.php. Он используется для обработки и возврата данных в формате JSON в ответ на ajax-запросы, связанные с таблицей элементов.

WP_List_Table::ajax_response();

Метод ajax_response() вызывается статически, без создания экземпляра класса WP_List_Table. Он используется для обработки ajax-запросов, связанных с таблицей элементов, и возвращает данные в формате JSON.

Вот подробные комментарии к коду:

<?php
/**
 * Обработка ajax-запроса и возврат данных в формате JSON.
 *
 * @since 3.1.0
 *
 * @global wpdb         $wpdb     Объект базы данных WordPress.
 * @global string       $hook_suffix Суффикс хука текущей страницы.
 * @global string       $pagenow  Имя текущей страницы (без расширения).
 * @global string       $typenow  Тип текущего объекта.
 * @global string       $taxnow   Текущая таксономия.
 * @global string       $is_permalink  Флаг, указывающий, является ли текущая страница страницей записи.
 * @global string       $wp_locale  Объект локализации WordPress.
 * @global WP_Screen    $current_screen Объект текущего экрана.
 * @global WP_Post_Type $post_type Объект типа записи.
 * @global string       $post_type_object  Имя объекта типа записи.
 * @global string       $post_mime_type  Тип медиафайла.
 * @global string       $mode  Режим редактирования.
 * @global string       $comment_status  Статус комментариев.
 * @global string       $post_status  Статус записи.
 * @global string       $action  Действие, выполняемое на странице.
 * @global string       $parent_file  Имя файла родительской страницы.
 * @global string       $submenu_file  Имя файла подстраницы.
 * @global string       $plugin_page  Имя страницы плагина.
 * @global string       $admin_page_hooks  Список хуков административных страниц.
 * @global string       $typenow  Текущий тип записи.
 * @global string       $taxnow   Текущая таксономия.
 * @global string       $pagenow  Имя текущей страницы (без расширения).
 * @global string       $is_permalink  Флаг, указывающий, является ли текущая страница страницей записи.
 * @global string       $wp_locale  Объект локализации WordPress.
 * @global WP_Screen    $current_screen Объект текущего экрана.
 * @global WP_Post_Type $post_type Объект типа записи.
 * @global string       $post_type_object  Имя объекта типа записи.
 * @global string       $post_mime_type  Тип медиафайла.
 * @global string       $mode  Режим редактирования.
 * @global string       $comment_status  Статус комментариев.
 * @global string       $post_status  Статус записи.
 * @global string       $action  Действие, выполняемое на странице.
 * @global string       $parent_file  Имя файла родительской страницы.
 * @global string       $submenu_file  Имя файла подстраницы.
 * @global string       $plugin_page  Имя страницы плагина.
 * @global string       $admin_page_hooks  Список хуков административных страниц.
 *
 * @param mixed $response Данные, которые будут возвращены в ответ на ajax-запрос.
 */
public static function ajax_response( $response ) {
    // Обработка и возврат данных в формате JSON.
}

Метод ajax_response() принимает один параметр $response, который представляет собой данные, которые будут возвращены в ответ на ajax-запрос. Он обрабатывает и возвращает эти данные в формате JSON.

ajax_user_can()

Метод ajax_user_can() является частью класса WP_List_Table и используется для проверки разрешений текущего пользователя.

Данный метод проверяет разрешения текущего пользователя на выполнение определенных действий. Он принимает один аргумент — строку с идентификатором действия, для которого нужно проверить разрешение.

Метод ajax_user_can() работает следующим образом:

  • Получает текущего пользователя.
  • Проверяет разрешения пользователя на выполнение указанного действия.
  • Возвращает true, если пользователь имеет разрешение, и false, если у пользователя нет разрешения.
WP_List_Table::ajax_user_can( $action );

Метод ajax_user_can() принимает один аргумент:

  • $action (обязательный) — строка с идентификатором действия, для которого нужно проверить разрешение.

Пример использования:

$can_do_action = WP_List_Table::ajax_user_can( 'edit_posts' );

В данном примере метод ajax_user_can() проверяет разрешение текущего пользователя на выполнение действия «edit_posts». Результат проверки сохраняется в переменной $can_do_action.

bulk_actions()

Метод bulk_actions() отображает выпадающий список с возможными массовыми действиями для элементов. Он используется для создания пользовательского интерфейса для выбора действий, которые можно применить к выбранным элементам списка.

WP_List_Table::bulk_actions( string $which = '' )

Метод bulk_actions() принимает один необязательный параметр $which, который указывает местоположение выпадающего списка с массовыми действиями: ‘top’ или ‘bottom’. По умолчанию параметр равен пустой строке.

$which (строка, необязательно): Местоположение выпадающего списка с массовыми действиями: ‘top’ или ‘bottom’. Этот параметр является необязательным для обратной совместимости. По умолчанию: пустая строка.


/**
 * Пример использования метода bulk_actions()
 */
$which = 'top'; // Местоположение выпадающего списка с массовыми действиями
// Выводит выпадающий список с массовыми действиями
$wp_list_table = new WP_List_Table();
$wp_list_table->bulk_actions( $which );

В этом примере метод bulk_actions() вызывается на экземпляре класса WP_List_Table и передается параметр $which, указывающий местоположение выпадающего списка с массовыми действиями. Метод отображает выпадающий список с возможными массовыми действиями для элементов.

column_cb()

Метод column_cb() является частью класса WP_List_Table и используется для отображения чекбокса в колонке таблицы. Он вызывается автоматически при выводе каждой строки таблицы и добавляет чекбокс для выбора элемента.

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

WP_List_Table::column_cb( object|array $item )

Метод column_cb() принимает один параметр:

  • $item (обязательный) — объект или массив, представляющий элемент таблицы.

Метод column_cb() принимает следующий параметр:

  • $item (обязательный) — объект или массив, представляющий элемент таблицы. Этот параметр содержит данные элемента, которые будут отображаться в таблице.
<span class="token-comment">// Пример использования метода column_cb()</span>
<span class="token-comment">// Выводит чекбокс для выбора элемента в таблице</span>
<span class="token-function">function</span> <span class="token-function">column_cb</span>( <span class="token-variable">$item</span> ) {
    <span class="token-comment">// Создаем уникальный идентификатор для чекбокса</span>
    <span class="token-variable">$cb_id</span> = <span class="token-string">'cb_'</span> . <span class="token-function">esc_attr</span>( <span class="token-function">md5</span>( <span class="token-function">serialize</span>( <span class="token-variable">$item</span> ) ) );
    <span class="token-comment">// Выводим чекбокс с уникальным идентификатором</span>
    <span class="token-keyword">echo</span> <span class="token-string">'<input type="checkbox" id="'</span> . <span class="token-variable">$cb_id</span> . <span class="token-string">'" name="itemcheck[]"/>'</span>;
}

column_default()

Метод column_default() является частью класса WP_List_Table и используется для отображения значений по умолчанию в столбцах таблицы. Он вызывается, когда для указанного столбца не определен отдельный метод отображения.

Метод column_default() принимает два обязательных параметра: $item (объект или массив) и $column_name (строка). Он возвращает значение, которое будет отображаться в ячейке таблицы для указанного столбца.

WP_List_Table::column_default( object|array $item, string $column_name )

Метод column_default() вызывается автоматически при отображении значений по умолчанию для столбцов таблицы.

  • $item (объект или массив) — Обязательный параметр. Объект или массив, содержащий данные для текущей строки таблицы.
  • $column_name (строка) — Обязательный параметр. Название столбца, для которого вызывается метод.

/**
 * Отображает значение по умолчанию для столбца таблицы.
 *
 * @param object|array $item        Объект или массив с данными строки таблицы.
 * @param string       $column_name Название столбца.
 *
 * @return string Значение для отображения в ячейке таблицы.
 */
public function column_default( $item, $column_name ) {
    // Получаем значение для указанного столбца
    $value = isset( $item[ $column_name ] ) ? $item[ $column_name ] : '';
    // Возвращаем значение для отображения в ячейке таблицы
    return $value;
}

В приведенном примере кода показано, как реализовать метод column_default() в пользовательском классе, наследующем WP_List_Table. Метод получает значение для указанного столбца из объекта или массива данных строки таблицы и возвращает это значение для отображения в ячейке таблицы.

comments_bubble()

Метод comments_bubble() отображает пузырек с количеством комментариев.

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

WP_List_Table::comments_bubble( int $post_id, int $pending_comments )

Метод comments_bubble() принимает два обязательных параметра:

  • $post_id (int) — ID записи, для которой нужно отобразить пузырек с количеством комментариев.
  • $pending_comments (int) — Количество ожидающих модерации комментариев.

$post_id (int) — Обязательный параметр. ID записи, для которой нужно отобразить пузырек с количеством комментариев.

$pending_comments (int) — Обязательный параметр. Количество ожидающих модерации комментариев.


/**
 * Отображение пузырька с количеством комментариев
 *
 * @param int $post_id ID записи
 * @param int $pending_comments Количество ожидающих модерации комментариев
 */
WP_List_Table::comments_bubble( $post_id, $pending_comments );

current_action()

Метод current_action() является частью класса WP_List_Table и используется для получения текущего выбранного действия из выпадающего списка массовых действий.

Метод возвращает имя выбранного действия или false, если действие не было выбрано.

WP_List_Table::current_action(): string|false

Метод current_action() возвращает строку с именем выбранного действия или false, если действие не было выбрано.

Пример использования:

// Получение текущего выбранного действия
$action = $this->current_action();

В данном примере переменная $action будет содержать имя выбранного действия или false, если действие не было выбрано.

Метод current_action() возвращает строку с именем выбранного действия или false, если действие не было выбрано.

display()

Метод display() является частью класса WP_List_Table и используется для отображения таблицы с элементами в виде HTML-таблицы с поддержкой AJAX.

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

Метод display() является основным методом класса WP_List_Table и должен быть вызван для отображения таблицы.

WP_List_Table::display();

Метод display() вызывается статически, без создания экземпляра класса WP_List_Table. Он отображает таблицу с элементами, используя текущие настройки и данные, установленные в классе.

Данный метод обычно вызывается внутри шаблона административной панели WordPress, чтобы отобразить таблицу с элементами определенного типа данных.

Перед вызовом метода display() необходимо установить данные для таблицы, используя методы класса WP_List_Table, такие как set_items() и set_pagination_args(). Также можно настроить столбцы таблицы с помощью метода get_columns() и других методов класса.

display_rows()

Метод display_rows() является частью класса WP_List_Table и используется для генерации строк таблицы. Он отображает данные в виде HTML-таблицы с помощью AJAX.

Метод display_rows() генерирует строки таблицы, используя данные, полученные из метода prepare_items(). Он вызывается внутри метода display() класса WP_List_Table и отображает строки таблицы на экране.

Этот метод может быть переопределен в дочерних классах, чтобы настроить отображение строк таблицы в соответствии с конкретными требованиями.

WP_List_Table::display_rows();

Метод display_rows() вызывается внутри метода display() класса WP_List_Table. Он не принимает никаких аргументов.

Внутри метода display_rows() происходит генерация строк таблицы на основе данных, полученных из метода prepare_items(). Эти данные обычно представляют собой массив объектов, каждый из которых содержит информацию для одной строки таблицы.

Метод display_rows() используется для отображения данных в виде HTML-таблицы с помощью AJAX. Он вызывается автоматически при выводе таблицы на экран.

display_rows_or_placeholder()

Метод display_rows_or_placeholder() является частью класса WP_List_Table и используется для генерации элемента tbody в HTML-таблице, отображающей список элементов. Он отвечает за вывод строк таблицы или заполнение таблицы плейсхолдерами, если нет данных для отображения.

Метод display_rows_or_placeholder() проверяет, есть ли данные для отображения в таблице. Если данные есть, то он вызывает метод display_rows(), который отвечает за вывод строк таблицы. Если данных нет, то метод выводит плейсхолдеры с помощью метода display_rows_placeholder().

WP_List_Table::display_rows_or_placeholder()

Метод display_rows_or_placeholder() вызывается автоматически при отображении таблицы с помощью класса WP_List_Table. Он не требует явного вызова из кода разработчика.

display_tablenav()

Метод display_tablenav() является частью класса WP_List_Table и используется для генерации навигации таблицы над или под таблицей. Он отображает пагинацию, ссылки на сортировку и другие элементы управления над или под таблицей данных.

WP_List_Table::display_tablenav( string $which )

Метод display_tablenav() принимает один обязательный параметр:

  • $which (строка, обязательный) — указывает, где будет отображаться навигация таблицы. Допустимые значения: «top» (над таблицей) или «bottom» (под таблицей).

Метод не возвращает значения.

  • $which (строка, обязательный) — указывает, где будет отображаться навигация таблицы. Допустимые значения: «top» (над таблицей) или «bottom» (под таблицей).

/**
 * Пример использования метода display_tablenav()
 */
$wp_list_table = new WP_List_Table();
$wp_list_table->display_tablenav( 'top' );

В приведенном выше примере создается экземпляр класса WP_List_Table и вызывается метод display_tablenav() для отображения навигации над таблицей данных.

extra_tablenav()

Метод extra_tablenav() является частью класса WP_List_Table и используется для отображения дополнительных элементов управления между пакетными действиями и пагинацией в виде HTML-таблицы с возможностью AJAX.

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

WP_List_Table::extra_tablenav( string $which )

Метод extra_tablenav() принимает один обязательный параметр:

  • $which (строка) — обозначает тип дополнительных элементов управления, которые нужно отобразить. Возможные значения: ‘top’ (для элементов управления над таблицей) или ‘bottom’ (для элементов управления под таблицей).

Метод не возвращает значения.

  • $which (строка, обязательный) — обозначает тип дополнительных элементов управления, которые нужно отобразить. Возможные значения: ‘top’ (для элементов управления над таблицей) или ‘bottom’ (для элементов управления под таблицей).
<code>$this</code>->extra_tablenav( 'top' );

В данном примере метод extra_tablenav() вызывается для отображения дополнительных элементов управления над таблицей.

get_bulk_actions()

Метод get_bulk_actions() является методом класса WP_List_Table, который используется для получения списка доступных массовых действий для данной таблицы.

Метод возвращает массив, содержащий список доступных массовых действий.

WP_List_Table::get_bulk_actions(): array

Метод get_bulk_actions() вызывается статически, используя имя класса WP_List_Table. Он не принимает никаких аргументов.

Метод возвращает массив, содержащий список доступных массовых действий для данной таблицы.

Пример использования:

$bulk_actions = WP_List_Table::get_bulk_actions();

В переменной $bulk_actions будет содержаться массив с доступными массовыми действиями для данной таблицы.

Метод get_bulk_actions() возвращает массив, содержащий список доступных массовых действий для данной таблицы.

Тип возвращаемого значения: array.

get_columns()

Метод get_columns() является частью класса WP_List_Table и используется для получения списка колонок, которые будут отображаться в таблице.

Этот метод возвращает массив, содержащий названия колонок таблицы.

WP_List_Table::get_columns(): array

Метод get_columns() не принимает никаких аргументов и возвращает массив.

Пример использования:

public function get_columns() {
    $columns = array(
        'column1' => 'Column 1',
        'column2' => 'Column 2',
        'column3' => 'Column 3'
    );
    return $columns;
}

В этом примере метод get_columns() возвращает массив с тремя элементами, где ключи представляют имена колонок, а значения — их названия.

Метод get_columns() возвращает массив, содержащий названия колонок таблицы.

get_column_count()

Метод get_column_count() является частью класса WP_List_Table и используется для получения количества видимых столбцов в таблице.

WP_List_Table::get_column_count(): int

Метод get_column_count() не требует передачи аргументов. Он возвращает целое число, представляющее количество видимых столбцов в таблице.

Метод get_column_count() возвращает целое число, которое представляет количество видимых столбцов в таблице.

get_column_info()

Метод get_column_info() класса WP_List_Table возвращает список всех столбцов таблицы, включая скрытые и сортируемые столбцы, с примененным фильтром.

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

WP_List_Table::get_column_info(): array

Метод get_column_info() вызывается статически, используя имя класса WP_List_Table и оператор ::. Он не принимает никаких аргументов.

Пример использования:

$column_info = WP_List_Table::get_column_info();

В этом примере переменной $column_info будет присвоен массив, содержащий информацию о столбцах таблицы.

Метод get_column_info() возвращает массив, содержащий информацию о столбцах таблицы. Каждый элемент массива представляет собой ассоциативный массив с ключами:

  • name: Заголовок столбца
  • key: Ключ столбца
  • visible: Флаг видимости столбца (true или false)
  • sortable: Флаг возможности сортировки столбца (true или false)

get_default_primary_column_name()

Метод get_default_primary_column_name() является частью класса WP_List_Table и используется для получения имени столбца по умолчанию, который является первичным столбцом.

WP_List_Table::get_default_primary_column_name(): string

Метод get_default_primary_column_name() возвращает строку, которая представляет имя первичного столбца по умолчанию. В данном случае, возвращается пустая строка.

Метод get_default_primary_column_name() возвращает строку, которая представляет имя первичного столбца по умолчанию. В данном случае, возвращается пустая строка.

get_items_per_page()

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

Этот метод является частью класса WP_List_Table, который является базовым классом для отображения списка элементов в ajax-таблице HTML.

WP_List_Table::get_items_per_page( string $option, int $default_value = 20 ): int

Метод get_items_per_page() принимает два параметра:

  • $option (обязательный) — имя опции пользователя.
  • $default_value (необязательный) — количество элементов для отображения на странице. По умолчанию: 20.

Метод get_items_per_page() принимает следующие параметры:

  • $option (строка, обязательный) — имя опции пользователя. Опция должна быть зарегистрирована с помощью функции register_setting().
  • $default_value (целое число, необязательный) — количество элементов для отображения на странице. По умолчанию: 20.

Метод get_items_per_page() возвращает целое число — количество элементов, отображаемых на одной странице.

<?php
// Получение количества элементов на странице
$items_per_page = WP_List_Table::get_items_per_page( 'my_option', 10 );
// Вывод количества элементов на странице
echo 'Количество элементов на странице: ' . $items_per_page;
?>

В этом примере мы используем метод get_items_per_page() для получения количества элементов, отображаемых на странице. Мы передаем имя опции пользователя 'my_option' и значение по умолчанию 10. Затем мы выводим полученное количество элементов на странице.

get_pagenum()

Метод get_pagenum() класса WP_List_Table возвращает текущий номер страницы.

Метод используется для получения текущего номера страницы в списке элементов, отображаемом в виде ajax-таблицы.

WP_List_Table::get_pagenum(): int

Метод get_pagenum() возвращает текущий номер страницы в виде целого числа.

Код метода:


/**
 * Gets the current page number.
 *
 * @return int The current page number.
 */
protected function get_pagenum() {
    return isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1;
}

Метод get_pagenum() проверяет, установлен ли параметр paged в запросе. Если параметр установлен, то метод возвращает его значение, преобразованное в целое число с помощью функции absint(). Если параметр paged не установлен, метод возвращает значение 1.

Метод get_pagenum() возвращает текущий номер страницы в виде целого числа (int).

get_pagination_arg()

Метод get_pagination_arg() является частью класса WP_List_Table и предназначен для доступа к аргументам пагинации.

WP_List_Table::get_pagination_arg( string $key ): int

Метод get_pagination_arg() принимает один обязательный параметр $key, который является строкой и представляет собой аргумент пагинации, который требуется получить. Обычные значения для $key включают ‘total_items’, ‘total_pages’, ‘per_page’ или ‘infinite_scroll’.

$key (string) — Обязательный. Аргумент пагинации, который требуется получить. Обычные значения включают ‘total_items’, ‘total_pages’, ‘per_page’ или ‘infinite_scroll’.

Метод get_pagination_arg() возвращает целое число, которое соответствует заданному аргументу пагинации.

<code>// Получение общего количества элементов
$total_items = $this->get_pagination_arg( 'total_items' );
// Получение общего количества страниц
$total_pages = $this->get_pagination_arg( 'total_pages' );
// Получение количества элементов на странице
$per_page = $this->get_pagination_arg( 'per_page' );
// Получение значения бесконечной прокрутки
$infinite_scroll = $this->get_pagination_arg( 'infinite_scroll' );

В приведенном выше примере кода мы используем метод get_pagination_arg() для получения различных аргументов пагинации. Мы сохраняем общее количество элементов в переменную $total_items, общее количество страниц — в переменную $total_pages, количество элементов на странице — в переменную $per_page и значение бесконечной прокрутки — в переменную $infinite_scroll.

get_primary_column()

Метод get_primary_column() класса WP_List_Table возвращает имя основной колонки. Основная колонка — это колонка, которая будет использоваться для сортировки и отображения данных по умолчанию.

Метод работает следующим образом: он проверяет, задано ли имя основной колонки с помощью метода get_default_primary_column_name(). Если имя основной колонки не задано, то возвращается значение по умолчанию, которое определено в свойстве $default_primary_column_name.

WP_List_Table::get_primary_column(): string

Метод get_primary_column() вызывается статически, без создания экземпляра класса WP_List_Table. Он возвращает строку — имя основной колонки.

Пример использования:

// Получение имени основной колонки
$primary_column = WP_List_Table::get_primary_column();

Комментарии к коду:

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

Метод get_primary_column() возвращает строку — имя основной колонки по умолчанию.

get_primary_column_name()

Метод get_primary_column_name() класса WP_List_Table возвращает имя основной колонки.

WP_List_Table::get_primary_column_name(): string

Метод get_primary_column_name() возвращает строку, представляющую имя основной колонки.

Метод get_primary_column_name() возвращает имя основной колонки в виде строки.

get_sortable_columns()

Метод get_sortable_columns() является частью класса WP_List_Table и используется для получения списка сортируемых столбцов.

Этот метод возвращает массив, содержащий имена столбцов, которые могут быть отсортированы.

WP_List_Table::get_sortable_columns(): array

Метод get_sortable_columns() не принимает никаких аргументов.

Он возвращает массив, содержащий имена сортируемых столбцов.

Пример использования:

$sortable_columns = $this->get_sortable_columns();

В этом примере переменной $sortable_columns будет присвоен массив с именами сортируемых столбцов.

Метод get_sortable_columns() возвращает массив с именами сортируемых столбцов.

Пример:

array

get_table_classes()

Метод get_table_classes() является частью класса WP_List_Table и используется для получения списка CSS-классов для тега таблицы <table>. Он возвращает массив CSS-классов, которые могут быть применены к таблице.

WP_List_Table::get_table_classes(): string[]

Метод get_table_classes() является статическим и может быть вызван без создания экземпляра класса WP_List_Table. Он возвращает массив строк, представляющих CSS-классы для тега таблицы.

Метод get_table_classes() возвращает массив строк, представляющих CSS-классы для тега таблицы. Эти классы могут быть использованы для настройки внешнего вида таблицы.

get_views()

Метод get_views() является частью класса WP_List_Table и используется для получения списка доступных представлений (views) на данной таблице. Он возвращает массив с представлениями, которые могут быть отображены в таблице.

WP_List_Table::get_views(): array

Метод get_views() вызывается статически, без создания экземпляра класса WP_List_Table. Он возвращает массив, содержащий доступные представления (views) для данной таблицы.

Пример использования:

 $views = WP_List_Table::get_views();

В данном примере переменная $views будет содержать массив с доступными представлениями (views) для таблицы.

Метод get_views() возвращает массив с доступными представлениями (views) для данной таблицы.

Метод get_views_links() генерирует ссылки для представлений. Он используется для создания ссылок, которые позволяют пользователю переключаться между различными представлениями данных в таблице.

WP_List_Table::get_views_links( array $link_data = array() ): string[]

Метод get_views_links() принимает один параметр — массив $link_data, который содержит данные для создания ссылок. Возвращает строковый массив с разметкой ссылок.

$link_data (массив, необязательный): Массив данных для создания ссылок. Он содержит следующие ключи:

  • url (строка): URL ссылки.
  • label (строка): Текст ссылки.
  • current (логическое значение, необязательное): Определяет, является ли данное представление текущим. По умолчанию равно false.

Метод get_views_links() возвращает массив строковых значений с разметкой ссылок. Ключи массива соответствуют входному массиву $link_data.

<code>$link_data = array(
    array(
        'url'     => 'https://example.com/all',
        'label'   => 'All',
        'current' => true,
    ),
    array(
        'url'     => 'https://example.com/published',
        'label'   => 'Published',
        'current' => false,
    ),
    array(
        'url'     => 'https://example.com/drafts',
        'label'   => 'Drafts',
        'current' => false,
    ),
);
$views_links = WP_List_Table::get_views_links( $link_data );
foreach ( $views_links as $link ) {
    echo $link;
}

В этом примере мы создаем массив $link_data с данными для трех ссылок. Затем мы вызываем метод get_views_links() с этим массивом и сохраняем результат в переменной $views_links. Затем мы проходимся по каждой ссылке в массиве и выводим ее на экран.

handle_row_actions()

Метод handle_row_actions() генерирует и отображает ссылки для действий с строкой в таблице. Он используется для создания действий, которые можно выполнить для каждой строки в списке элементов.

WP_List_Table::handle_row_actions( object|array $item, string $column_name, string $primary ): string

Метод handle_row_actions() принимает три обязательных параметра: $item (объект или массив), $column_name (строка, текущее имя столбца) и $primary (строка, имя основного столбца). Он возвращает строку HTML с действиями для строки или пустую строку, если текущий столбец не является основным столбцом.

  • $item (объект|array) — Обязательный. Элемент, к которому применяется действие.
  • $column_name (строка) — Обязательный. Текущее имя столбца.
  • $primary (строка) — Обязательный. Имя основного столбца.

Метод handle_row_actions() возвращает строку HTML с действиями для строки или пустую строку, если текущий столбец не является основным столбцом.

<?php
$item = get_some_item(); // Получение элемента
$column_name = 'title'; // Текущее имя столбца
$primary = 'id'; // Имя основного столбца
// Генерация и отображение действий для строки
$row_actions = WP_List_Table::handle_row_actions( $item, $column_name, $primary );
// Вывод действий
echo $row_actions;
?>

В приведенном выше примере мы получаем элемент с помощью функции get_some_item(). Затем мы указываем текущее имя столбца ($column_name) и имя основного столбца ($primary). Затем мы вызываем метод handle_row_actions() с этими параметрами и сохраняем результат в переменную $row_actions. Наконец, мы выводим строку действий с помощью echo.

has_items()

Метод has_items() является частью класса WP_List_Table и используется для определения наличия элементов в таблице. Он проверяет, есть ли элементы для отображения или нет.

WP_List_Table::has_items(): bool

Метод has_items() возвращает булево значение true или false. Он используется для определения наличия элементов в таблице.

Метод has_items() возвращает булево значение (bool), которое указывает, есть ли элементы для отображения в таблице или нет.

months_dropdown()

Метод months_dropdown() отображает выпадающий список для фильтрации элементов в таблице списка по месяцу. Он используется для создания элемента управления, позволяющего пользователю выбрать определенный месяц для фильтрации данных.

WP_List_Table::months_dropdown( string $post_type )

Метод months_dropdown() принимает один обязательный параметр:

  • $post_type (string) — Тип записи. Этот параметр указывает, для какого типа записи нужно отобразить выпадающий список.

$post_type (string) — Обязательный параметр. Тип записи. Указывает, для какого типа записи нужно отобразить выпадающий список.


/**
 * Пример использования метода months_dropdown()
 */
$post_type = 'post'; // Тип записи
// Выводит выпадающий список для фильтрации по месяцу
WP_List_Table::months_dropdown( $post_type );

В приведенном выше примере кода мы указываем тип записи 'post' и вызываем метод months_dropdown() для отображения выпадающего списка фильтрации по месяцу.

no_items()

Метод no_items() является частью класса WP_List_Table и используется для отображения сообщения, когда в таблице отсутствуют элементы.

Он выводит заданное сообщение на экран, которое может быть настроено с помощью фильтра wp_list_table_no_items.

WP_List_Table::no_items();

Метод no_items() вызывается без передачи аргументов и не возвращает никакого значения.

Он используется внутри класса WP_List_Table для отображения сообщения «No items found» (или другого заданного сообщения) в случае отсутствия элементов в таблице.

Для настройки текста сообщения можно использовать фильтр wp_list_table_no_items. Этот фильтр позволяет изменить выводимое сообщение с помощью пользовательской функции.

Пример использования фильтра:

add_filter( 'wp_list_table_no_items', 'custom_no_items_message' );
function custom_no_items_message( $message ) {
    $message = 'Custom message when no items are found';
    return $message;
}

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

pagination()

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

WP_List_Table::pagination( string $which )

Метод pagination() принимает один обязательный параметр:

  • $which (string) — Определяет, какую часть пагинации нужно отобразить. Возможные значения: ‘top’ (верхняя часть пагинации) или ‘bottom’ (нижняя часть пагинации).
  • $which (string, обязательный) — Определяет, какую часть пагинации нужно отобразить. Возможные значения: ‘top’ (верхняя часть пагинации) или ‘bottom’ (нижняя часть пагинации).

/**
 * Пример использования метода pagination()
 */
// Отображение верхней части пагинации
$wp_list_table->pagination( 'top' );
// Отображение нижней части пагинации
$wp_list_table->pagination( 'bottom' );

prepare_items()

Метод prepare_items() является частью класса WP_List_Table и используется для подготовки списка элементов для отображения. Он выполняет несколько важных задач:

  • Получает данные, необходимые для отображения списка элементов.
  • Устанавливает общее количество элементов.
  • Устанавливает данные для пагинации.
  • Устанавливает данные для сортировки.

Метод prepare_items() вызывается перед отображением списка элементов и обеспечивает правильное отображение данных.

WP_List_Table::prepare_items();

Метод prepare_items() не принимает никаких аргументов. Он вызывается внутри класса WP_List_Table и автоматически подготавливает список элементов для отображения.

Внутри метода prepare_items() происходит следующее:

  1. Устанавливается общее количество элементов с помощью метода set_pagination_args().
  2. Получаются данные для отображения с помощью метода get_data().
  3. Устанавливаются данные для пагинации с помощью метода set_pagination_args().
  4. Устанавливаются данные для сортировки с помощью метода usort().

Метод prepare_items() является важной частью процесса отображения списка элементов и должен быть вызван перед выводом таблицы с помощью метода display().

Метод print_column_headers() используется для вывода заголовков столбцов в таблице. Он учитывает скрытые и сортируемые столбцы.

WP_List_Table::print_column_headers( bool $with_id = true )

Метод print_column_headers() принимает один необязательный параметр:

  • $with_id (тип: bool, по умолчанию: true) — Определяет, устанавливать ли атрибут ID или нет.

$with_id bool: Необязательный параметр. Определяет, устанавливать ли атрибут ID или нет. По умолчанию установлено значение true.


/**
 * Пример использования метода print_column_headers()
 */
$wp_list_table = new WP_List_Table();
$wp_list_table->print_column_headers( true );

В этом примере создается новый объект класса WP_List_Table и вызывается метод print_column_headers() с параметром true.

Метод print_table_description() является частью класса WP_List_Table и используется для вывода описания таблицы с информацией о текущей сортировке и порядке.

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

WP_List_Table::print_table_description();

Метод print_table_description() вызывается статически, используя имя класса WP_List_Table. Он не принимает никаких аргументов.

Этот метод выводит описание таблицы с информацией о текущей сортировке и порядке. Описание будет отображаться в виде строки и может быть добавлено в нужное место на странице с помощью соответствующих хуков или функций.

row_actions()

Метод row_actions() генерирует необходимый HTML для списка ссылок действий строки.

Этот метод используется для отображения списка действий, доступных для каждой строки в таблице. Он генерирует HTML-код, содержащий ссылки на различные действия, такие как «Редактировать», «Удалить» и т. д. Эти ссылки могут быть видимыми всегда или только при наведении курсора на строку.

WP_List_Table::row_actions( string[] $actions, bool $always_visible = false ): string

Метод row_actions() принимает два параметра: $actions и $always_visible. Параметр $actions является обязательным и представляет собой массив ссылок действий. Параметр $always_visible является необязательным и указывает, должны ли ссылки действий быть всегда видимыми. По умолчанию он установлен в значение false.

$actions (string[]) — Обязательный. Массив ссылок действий.

$always_visible (bool) — Необязательный. Определяет, должны ли ссылки действий быть всегда видимыми. По умолчанию: false.

Метод row_actions() возвращает HTML-код для ссылок действий строки.

<?php
    $actions = array(
        'edit' => '<a href="#">Редактировать</a>',
        'delete' => '<a href="#">Удалить</a>'
    );
    $always_visible = false;
    $row_actions = WP_List_Table::row_actions( $actions, $always_visible );
    echo $row_actions;
?>

В этом примере мы создаем массив $actions, содержащий две ссылки действий — «Редактировать» и «Удалить». Затем мы устанавливаем значение $always_visible в false. Затем мы вызываем метод row_actions() с этими параметрами и сохраняем результат в переменную $row_actions. Наконец, мы выводим HTML-код ссылок действий, используя переменную $row_actions.

Метод search_box() отображает поле поиска на странице. Оно используется для поиска элементов в списке и обычно располагается в верхней части таблицы.

WP_List_Table::search_box( string $text, string $input_id )

Метод search_box() принимает два обязательных параметра:

  • $text (строка) — текст на кнопке «Отправить».
  • $input_id (строка) — значение атрибута ID для поля ввода поиска.

/**
 * Пример использования метода search_box()
 */
$text = 'Поиск'; // Текст на кнопке "Отправить"
$input_id = 'search-input'; // Значение атрибута ID для поля ввода поиска
$wp_list_table = new WP_List_Table();
$wp_list_table->search_box( $text, $input_id );

В данном примере создается объект класса WP_List_Table и вызывается метод search_box() с передачей параметров $text и $input_id.

Метод search_box() отображает поле поиска с кнопкой «Отправить» и полем ввода с указанным значением атрибута ID. При нажатии на кнопку «Отправить» будет выполнен поиск элементов в списке.

Этот метод обычно используется внутри метода display() класса WP_List_Table для отображения поисковой строки в верхней части таблицы.

Подробнее о классе WP_List_Table можно прочитать в документации WordPress.

set_pagination_args()

Метод set_pagination_args() устанавливает все необходимые аргументы пагинации для класса WP_List_Table. Он используется для настройки пагинации в таблице, отображающей список элементов.

WP_List_Table::set_pagination_args( array|string $args )

Метод set_pagination_args() принимает один параметр $args, который является массивом или строкой с информацией о пагинации.

$args (обязательный): Массив или строка с аргументами, содержащими информацию о пагинации.

<?php
$args = array(
    'total_items' => 100,
    'total_pages' => 10,
    'per_page' => 10,
    'current_page' => 1,
    'orderby' => 'name',
    'order' => 'ASC',
    'search' => false,
    'query_args' => array(),
);
$my_list_table = new My_List_Table();
$my_list_table->set_pagination_args( $args );
?>

В приведенном выше примере кода создается массив $args, содержащий информацию о пагинации. Затем создается экземпляр класса My_List_Table и вызывается метод set_pagination_args(), передавая ему массив $args в качестве аргумента.

single_row()

Метод single_row() генерирует содержимое для одной строки таблицы. Он вызывается внутри метода display_rows() класса WP_List_Table и используется для отображения данных одной записи в таблице.

WP_List_Table::single_row( object|array $item )

Метод single_row() принимает один обязательный параметр:

  • $item (object|array) — Текущая запись, для которой нужно сгенерировать строку таблицы.

$item (object|array) — Обязательный параметр. Текущая запись, для которой нужно сгенерировать строку таблицы.

<code>$item</code> = array(
  'id' => 1,
  'name' => 'John Doe',
  'email' => 'john.doe@example.com'
);
WP_List_Table::single_row( <code>$item</code> );

Пример кода демонстрирует использование метода single_row() для генерации строки таблицы с данными записи. В данном примере используется массив $item, содержащий информацию о пользователе (id, name, email).

single_row_columns()

Метод single_row_columns() генерирует столбцы для одной строки таблицы. Он используется в классе WP_List_Table для отображения данных в виде HTML-таблицы с возможностью AJAX.

WP_List_Table::single_row_columns( object|array $item )

Метод single_row_columns() принимает один обязательный параметр:

  • $item (объект или массив) — Текущий элемент, для которого генерируются столбцы.

$item (объект или массив) — Текущий элемент. Это может быть объект или массив, содержащий данные для отображения в строке таблицы.

<?php
$item = array(
  'name' => 'John Doe',
  'email' => 'johndoe@example.com',
  'phone' => '123-456-7890'
);
WP_List_Table::single_row_columns( $item );
?>

В приведенном выше примере кода переменная $item содержит данные для одной строки таблицы. Метод single_row_columns() используется для генерации столбцов этой строки.

views()

Метод views() класса WP_List_Table отображает список доступных представлений (views) на данной таблице.

WP_List_Table::views();

Метод views() вызывается статически, без создания экземпляра класса WP_List_Table. Он выводит список доступных представлений (views) в виде HTML-кода.

Представления (views) — это фильтры, которые позволяют пользователю отображать только определенные элементы в таблице. Например, в таблице постов в административной панели WordPress представления могут быть «Все посты», «Опубликованные», «Черновики» и т.д.

Метод views() используется для вывода списка представлений (views) в HTML-формате. Он обычно вызывается внутри метода display() класса WP_List_Table для отображения списка представлений (views) над таблицей.

view_switcher()

Метод view_switcher() отображает переключатель вида.

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

WP_List_Table::view_switcher( string $current_mode )

Метод view_switcher() принимает один обязательный параметр:

  • $current_mode (строка) — Текущий режим отображения.

Метод не возвращает значения.

  • $current_mode (строка, обязательный) — Текущий режим отображения. Это значение будет использоваться для определения активного режима в переключателе вида.

/**
 * Пример использования метода view_switcher()
 */
$current_mode = 'grid'; // Текущий режим отображения
// Выводит переключатель вида
WP_List_Table::view_switcher( $current_mode );

В приведенном выше примере кода создается переменная $current_mode, которая содержит текущий режим отображения. Затем метод view_switcher() вызывается с этой переменной в качестве аргумента, чтобы отобразить переключатель вида.

_js_vars()

Метод _js_vars() является частью класса WP_List_Table и используется для отправки необходимых переменных в JavaScript.

Он выполняет следующие действия:

  • Создает массив переменных, которые будут переданы в JavaScript.
  • Преобразует массив в JSON-строку.
  • Выводит скрипт с глобальной переменной, содержащей JSON-строку.
WP_List_Table::_js_vars()

Метод _js_vars() вызывается внутри класса WP_List_Table и не требует явного вызова извне.

Он автоматически выполняется при создании экземпляра класса WP_List_Table и используется для передачи необходимых переменных в JavaScript.

Внутри метода происходит следующее:

  1. Создается пустой массив $js_vars, в котором будут храниться переменные.
  2. Добавляются необходимые переменные в массив $js_vars. Эти переменные зависят от конкретного использования WP_List_Table и могут быть различными.
  3. Массив $js_vars преобразуется в JSON-строку с помощью функции json_encode().
  4. Выводится скрипт с глобальной переменной, содержащей JSON-строку. Это позволяет передать переменные в JavaScript.

Метод _js_vars() является внутренним методом класса WP_List_Table и обычно не требует изменений или расширений при создании пользовательских таблиц.

__call()

Метод «__call()» является частью класса «WP_List_Table» и используется для сделать приватные/защищенные методы доступными для обратной совместимости. Он позволяет вызывать методы, которые не определены непосредственно в классе, но доступны в его родительских классах.

WP_List_Table::__call( string $name, array $arguments )

Метод «__call()» принимает два параметра: строку «$name» и массив «$arguments». Он возвращает значение, возвращаемое обратным вызовом, или false в противном случае.

$name (string) — Обязательный. Имя метода, который нужно вызвать.

$arguments (array) — Обязательный. Аргументы, которые нужно передать при вызове метода.

Метод «__call()» возвращает значение обратного вызова или false в случае неудачи.

<?php
// Пример использования метода "__call()"
// Создание экземпляра класса WP_List_Table
$wp_list_table = new WP_List_Table();
// Вызов метода, который не определен непосредственно в классе WP_List_Table
$result = $wp_list_table->__call( 'undefined_method', array( 'arg1', 'arg2' ) );
// Вывод результата
echo $result;
?>

В приведенном выше примере мы создаем экземпляр класса WP_List_Table и вызываем метод «__call()» для вызова метода «undefined_method», который не определен непосредственно в классе. Мы передаем два аргумента «arg1» и «arg2». Результат вызова метода сохраняется в переменной «$result» и выводится на экран.

__construct()

Метод «__construct()» является конструктором класса «WP_List_Table». Он вызывается при создании нового объекта класса и выполняет необходимые инициализации.

Класс «WP_List_Table» является базовым классом для отображения списка элементов в виде HTML-таблицы с поддержкой AJAX.

WP_List_Table::__construct( array|string $args = array() )

Конструктор класса «WP_List_Table» принимает один необязательный параметр — массив или строку аргументов.

$args (array|string) — Массив или строка аргументов. Возможные параметры:

  • plural (string) — Множественное значение, используемое для меток и перечисляемых объектов. Влияет на такие вещи, как имена классов CSS и nonce, используемые в таблице списка, например, ‘posts’.
  • singular (string) — Единственная метка для перечисляемого объекта, например, ‘post’. По умолчанию пустая строка.
  • ajax (bool) — Определяет, поддерживает ли таблица списка AJAX. Включает загрузку и сортировку данных, например. Если true, класс будет вызывать метод _js_vars() в подвале, чтобы предоставить переменные для любых скриптов, обрабатывающих события AJAX. По умолчанию false.
  • screen (string) — Строка, содержащая имя хука, используемого для определения текущего экрана. Если оставить null, текущий экран будет автоматически установлен. По умолчанию null.
<?php
$args = array(
  'plural'   => 'посты',
  'singular' => 'пост',
  'ajax'     => true,
  'screen'   => 'edit-post'
);
$table = new WP_List_Table( $args );
?>

В данном примере создается новый объект класса «WP_List_Table» с указанными параметрами. Множественное значение установлено на «посты», единственное значение — на «пост», поддержка AJAX включена, а текущий экран установлен на «edit-post».

__get()

Метод «__get()» является частью класса «WP_List_Table» и используется для чтения значений приватных свойств класса. Он был создан для обеспечения обратной совместимости.

WP_List_Table::__get( string $name ): mixed

Метод «__get()» принимает один обязательный параметр:

  • $name (string) — Название свойства, которое нужно получить.

Метод возвращает значение запрашиваемого свойства.

<?php
// Создание экземпляра класса WP_List_Table
$wp_list_table = new WP_List_Table();
// Получение значения свойства "example_property"
$property_value = $wp_list_table->__get( 'example_property' );
// Вывод значения свойства "example_property"
echo $property_value;
?>

В приведенном выше примере мы создаем экземпляр класса WP_List_Table и затем используем метод «__get()» для получения значения свойства «example_property». Значение свойства затем выводится на экран.

$name (string) — Обязательный параметр. Название свойства, которое нужно получить.

Метод «__get()» принимает только один параметр:

  • $name — Название свойства, которое нужно получить.

Метод «__get()» возвращает значение запрашиваемого свойства. Тип возвращаемого значения может быть любым.

__isset()

Метод «__isset()» является частью класса «WP_List_Table» и используется для проверки существования и установки значения приватного свойства. Он предназначен для обеспечения совместимости с предыдущими версиями.

WP_List_Table::__isset( string $name ): bool

Метод «__isset()» принимает один обязательный параметр:

  • $name (string) — Название свойства, которое нужно проверить на существование.

Метод «__isset()» принимает следующий параметр:

  • $name (string) — Обязательный. Свойство, которое нужно проверить на существование.

Параметр $name должен быть строкой.

Метод «__isset()» возвращает логическое значение (bool). Он указывает, является ли свойство обратно совместимым и установлено ли оно.

<code>/**
 * Пример использования метода "__isset()" класса "WP_List_Table".
 *
 * @param string $name Название свойства.
 * @return bool Является ли свойство обратно совместимым и установлено ли оно.
 */
public function __isset( $name ) {
    // Проверяем, является ли свойство обратно совместимым и установлено ли оно.
    return isset( $this->$name );
}

__set()

Метод «__set()» является частью класса «WP_List_Table» и используется для установки значений для приватных свойств класса. Он был создан для обеспечения обратной совместимости.

Метод «__set()» позволяет устанавливать значения для приватных свойств класса «WP_List_Table». Он работает путем принятия двух аргументов: $name (имя свойства) и $value (значение свойства). После вызова метода «__set()», указанное свойство будет иметь новое значение, переданное в качестве аргумента $value.

WP_List_Table::__set( string $name, mixed $value ): mixed

Метод «__set()» принимает два аргумента: $name (строка, обязательный) и $value (любой тип данных, обязательный). Он возвращает mixed.

Пример использования:

$table = new WP_List_Table();
$table->__set( 'property_name', $value );

В данном примере мы создаем экземпляр класса «WP_List_Table» и используем метод «__set()» для установки значения для свойства с именем ‘property_name’.

Метод «__set()» принимает два параметра:

  • $name (строка, обязательный): Имя свойства, для которого нужно установить значение.
  • $value (любой тип данных, обязательный): Значение, которое нужно установить для указанного свойства.

Метод «__set()» возвращает mixed — новое установленное значение свойства.

<code>$table = new WP_List_Table();
$table->__set( 'property_name', $value );

В данном примере мы создаем экземпляр класса «WP_List_Table» и используем метод «__set()» для установки значения для свойства с именем ‘property_name’.

__unset()

Метод «__unset()» класса «WP_List_Table» используется для деления приватных свойств на неустанавливаемые для обеспечения обратной совместимости. Он позволяет сделать приватные свойства недоступными для изменения.

WP_List_Table::__unset( string $name )

Метод «__unset()» принимает один обязательный параметр:

  • $name (string) — Название свойства, которое нужно сделать неустанавливаемым.

$name (string) — Обязательный параметр. Название свойства, которое нужно сделать неустанавливаемым.

<?php
/**
 * Пример использования метода "__unset()" класса "WP_List_Table"
 *
 * @param string $name Название свойства, которое нужно сделать неустанавливаемым.
 */
$table = new WP_List_Table();
$table->__unset( 'property_name' );
?>

Примеры использования

Генерация таблицы с использованием класса WP_List_Table


class My_List_Table extends WP_List_Table {
    function __construct() {
        parent::__construct( array(
            'singular' => 'book',
            'plural'   => 'books',
            'ajax'     => false
        ) );
    }
 
    function column_default( $item, $column_name ) {
        switch( $column_name ) {
            case 'title':
            case 'author':
                return $item[ $column_name ];
            default:
                return print_r( $item, true );
        }
    }
 
    function get_columns() {
        $columns = array(
            'title'  => 'Title',
            'author' => 'Author',
        );
        return $columns;
    }
 
    function prepare_items() {
        $data = array(
            array(
                'title'  => 'Book 1',
                'author' => 'Author 1',
            ),
            array(
                'title'  => 'Book 2',
                'author' => 'Author 2',
            ),
        );
 
        $this->_column_headers = array( $this->get_columns(), array(), $this->get_sortable_columns() );
        $this->items = $data;
    }
}
 
function my_render_list_page() {
    $myListTable = new My_List_Table();
    $myListTable->prepare_items();
    $myListTable->display();
}
add_menu_page( 'My List Table', 'My List Table', 'manage_options', 'my_list_table', 'my_render_list_page' );

Отображение комментариев в виде пузыря


class My_List_Table extends WP_List_Table {
    function __construct() {
        parent::__construct( array(
            'singular' => 'comment',
            'plural'   => 'comments',
            'ajax'     => false
        ) );
    }
 
    function column_default( $item, $column_name ) {
        switch( $column_name ) {
            case 'comment_content':
                return $item[ $column_name ];
            default:
                return print_r( $item, true );
        }
    }
 
    function get_columns() {
        $columns = array(
            'comment_content' => 'Comment',
        );
        return $columns;
    }
 
    function prepare_items() {
        $data = array(
            array(
                'comment_content' => 'This is comment 1',
            ),
            array(
                'comment_content' => 'This is comment 2',
            ),
        );
 
        $this->_column_headers = array( $this->get_columns(), array(), $this->get_sortable_columns() );
        $this->items = $data;
    }
 
    function comments_bubble() {
        echo '<div class="updated"><p>2</p></div>';
    }
}
 
function my_render_list_page() {
    $myListTable = new My_List_Table();
    $myListTable->prepare_items();
    $myListTable->display();
}
add_menu_page( 'My List Table', 'My List Table', 'manage_options', 'my_list_table', 'my_render_list_page' );

Формирование навигации над таблицей


class My_List_Table extends WP_List_Table {
    function __construct() {
        parent::__construct( array(
            'singular' => 'book',
            'plural'   => 'books',
            'ajax'     => false
        ) );
    }
 
    function column_default( $item, $column_name ) {
        switch( $column_name ) {
            case 'title':
            case 'author':
                return $item[ $column_name ];
            default:
                return print_r( $item, true );
        }
    }
 
    function get_columns() {
        $columns = array(
            'title'  => 'Title',
            'author' => 'Author',
        );
        return $columns;
    }
 
    function prepare_items() {
        $data = array(
            array(
                'title'  => 'Book 1',
                'author' => 'Author 1',
            ),
            array(
                'title'  => 'Book 2',
                'author' => 'Author 2',
            ),
        );
 
        $this->_column_headers = array( $this->get_columns(), array(), $this->get_sortable_columns() );
        $this->items = $data;
    }
 
    function display_tablenav( $which ) {
        if ( 'top' === $which ) {
            echo 'Top navigation';
        }
        if ( 'bottom' === $which ) {
            echo 'Bottom navigation';
        }
    }
}
 
function my_render_list_page() {
    $myListTable = new My_List_Table();
    $myListTable->prepare_items();
    $myListTable->display();
}
add_menu_page( 'My List Table', 'My List Table', 'manage_options', 'my_list_table', 'my_render_list_page' );

Отображение дополнительных элементов управления


class My_List_Table extends WP_List_Table {
    function __construct() {
        parent::__construct( array(
            'singular' => 'book',
            'plural'   => 'books',
            'ajax'     => false
        ) );
    }
 
    function column_default( $item, $column_name ) {
        switch( $column_name ) {
            case 'title':
            case 'author':
                return $item[ $column_name ];
            default:
                return print_r( $item, true );
        }
    }
 
    function get_columns() {
        $columns = array(
            'title'  => 'Title',
            'author' => 'Author',
        );
        return $columns;
    }
 
    function prepare_items() {
        $data = array(
            array(
                'title'  => 'Book 1',
                'author' => 'Author 1',
            ),
            array(
                'title'  => 'Book 2',
                'author' => 'Author 2',
            ),
        );
 
        $this->_column_headers = array( $this->get_columns(), array(), $this->get_sortable_columns() );
        $this->items = $data;
    }
 
    function extra_tablenav( $which ) {
        if ( 'top' === $which ) {
            echo 'Top extra navigation';
        }
        if ( 'bottom' === $which ) {
            echo 'Bottom extra navigation';
        }
    }
}
 
function my_render_list_page() {
    $myListTable = new My_List_Table();
    $myListTable->prepare_items();
    $myListTable->display();
}
add_menu_page( 'My List Table', 'My List Table', 'manage_options', 'my_list_table', 'my_render_list_page' );

Групповые операции с элементами таблицы


class My_List_Table extends WP_List_Table {
    function __construct() {
        parent::__construct( array(
            'singular' => 'book',
            'plural'   => 'books',
            'ajax'     => false
        ) );
    }
 
    function column_default( $item, $column_name ) {
        switch( $column_name ) {
            case 'title':
            case 'author':
                return $item[ $column_name ];
            default:
                return print_r( $item, true );
        }
    }
 
    function get_columns() {
        $columns = array(
            'cb'     => '<input type="checkbox" />',
            'title'  => 'Title',
            'author' => 'Author',
        );
        return $columns;
    }
 
    function prepare_items() {
        $data = array(
            array(
                'title'  => 'Book 1',
                'author' => 'Author 1',
            ),
            array(
                'title'  => 'Book 2',
                'author' => 'Author 2',
            ),
        );
 
        $this->_column_headers = array( $this->get_columns(), array(), $this->get_sortable_columns() );
        $this->items = $data;
    }
 
    function bulk_actions( $which = '' ) {
        if ( 'top' === $which ) {
            echo 'Top bulk actions';
        }
        if ( 'bottom' === $which ) {
            echo 'Bottom bulk actions';
        }
    }
}
 
function my_render_list_page() {
    $myListTable = new My_List_Table();
    $myListTable->prepare_items();
    $myListTable->display();
}
add_menu_page( 'My List Table', 'My List Table', 'manage_options', 'my_list_table', 'my_render_list_page' );

Вопросы и ответы

Как добавить новую колонку в WP_List_Table?

Для добавления новой колонки в класс WP_List_Table необходимо переопределить метод get_columns(). В этом методе нужно вернуть массив, в котором ключами будут имена колонок, а значениями — их заголовки.


class My_List_Table extends WP_List_Table {
    function get_columns() {
        $columns = array(
            'cb' => '<input type="checkbox" />',
            'title' => 'Title',
            'author' => 'Author',
            'date' => 'Date',
            'my_column' => 'My Column'
        );
        return $columns;
    }
}

В приведенном примере добавлена новая колонка с именем ‘my_column’ и заголовком ‘My Column’.

Как сделать колонку сортируемой в WP_List_Table?

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


class My_List_Table extends WP_List_Table {
    function get_sortable_columns() {
        $sortable_columns = array(
            'title' => array('title', false),
            'author' => array('author', false),
            'date' => array('date', true)
        );
        return $sortable_columns;
    }
}

В приведенном примере колонка ‘date’ сделана сортируемой по возрастанию и убыванию.

Как изменить количество элементов на странице в WP_List_Table?

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


class My_List_Table extends WP_List_Table {
    function get_items_per_page($option, $default) {
        $per_page = get_user_meta(get_current_user_id(), $option, true);
        if (empty($per_page) || $per_page < 1) {
            $per_page = $default;
        }
        return $per_page;
    }
}

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

Как добавить действия над строками в WP_List_Table?

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


class My_List_Table extends WP_List_Table {
    function column_cb( $item ) {
        return sprintf(
            '<input type="checkbox" name="item[]" value="%s" />',
            $item['ID']
        );
    }
}

Как изменить стиль таблицы в WP_List_Table?

Для изменения стиля таблицы в WP_List_Table можно использовать метод get_table_classes(). В этом методе можно добавить или удалить CSS классы для таблицы.


class My_List_Table extends WP_List_Table {
    function get_table_classes() {
        return array( 'widefat', 'fixed', 'my-custom-table-class' );
    }
}

Как добавить фильтры над таблицей в WP_List_Table?

Для добавления фильтров над таблицей в WP_List_Table необходимо переопределить метод extra_tablenav(). В этом методе можно добавить любые элементы управления, такие как выпадающий список или текстовое поле, для фильтрации данных в таблице.


class My_List_Table extends WP_List_Table {
    function extra_tablenav( $which ) {
        if ( $which == 'top' ) {
            echo '<div class="alignleft actions">';
            echo '<label for="filter-by-date">Filter by Date:</label>';
            echo '<select name="filter-by-date" id="filter-by-date">';
            echo '<option value="">All Dates</option>';
            echo '<option value="2022-01">January 2022</option>';
            echo '<option value="2022-02">February 2022</option>';
            echo '</select>';
            echo '<input type="submit" class="button" value="Filter" />';
            echo '</div>';
        }
    }
}

Как изменить порядок сортировки в WP_List_Table?

Для изменения порядка сортировки в WP_List_Table необходимо переопределить метод get_sortable_columns(). Этот метод возвращает массив с названиями столбцов, по которым можно сортировать таблицу.


class My_List_Table extends WP_List_Table {
    function get_sortable_columns() {
        return array(
            'column_name' => 'column_name'
        );
    }
}

Как добавить пагинацию в WP_List_Table?

Для добавления пагинации в WP_List_Table необходимо переопределить методы prepare_items() и set_pagination_args(). Метод prepare_items() должен устанавливать значения для свойств $items и $total_items, а метод set_pagination_args() должен устанавливать аргументы пагинации.


class My_List_Table extends WP_List_Table {
    function prepare_items() {
        // Установка значений для $items и $total_items
    }
    
    function set_pagination_args( $args ) {
        // Установка аргументов пагинации
    }
}

Как добавить поиск по таблице в WP_List_Table?

Для добавления поиска по таблице в WP_List_Table необходимо переопределить метод search_box(). Этот метод должен выводить HTML-код для поля поиска.


class My_List_Table extends WP_List_Table {
    function search_box( $text, $input_id ) {
        // Вывод HTML-кода для поля поиска
    }
}

Класс WP_List_Table представляет собой базовый класс для отображения списка элементов в виде ajax-таблицы. Он содержит множество методов для настройки и управления таблицей, таких как изменение порядка сортировки, добавление пагинации и поиска по таблице.

Обсуждение