Вопрос или проблема
Добавление таблицы в стиле администратора на странице WordPress 4.x
Я пытаюсь добавить таблицу административного стиля на обычную страницу с примером ниже. Код находится в файле functions.php темы.
Похоже, класс не загружается и возникает ошибка, поэтому echo не вызывается.
У меня нет проблем с созданием таблиц в качестве плагина и в административной секции, но я пытаюсь сделать это на обычной странице.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'WP_List_Table' ) ) {
require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
}
class Transactions_List_Table extends WP_List_Table {
}
function render_transactions_list_page() {
$transactions_table = new Transactions_List_Table();
echo 'Привет';
}
// Добавьте это в шорткод, если вы хотите отобразить его на обычной странице
add_shortcode( 'transactions_table', 'render_transactions_list_page' );
Ответ или решение
Для того чтобы создать таблицу в стиле администрирования на обычной странице WordPress 4.x, вам необходимо учесть несколько ключевых моментов. Давайте разберем ваш код и внесем необходимые изменения, чтобы он работал корректно.
Шаг 1: Подключение класса WP_List_Table
Сначала убедитесь, что вы корректно подключаете класс WP_List_Table
. Вы уже это делаете, но лучше сделать проверку на наличие класса внутри функции, которая будет зарегистрирована как шорткод. Это поможет избежать ошибок при загрузке страницы.
Шаг 2: Определение класса для таблицы
Вам необходимо обновить ваш класс Transactions_List_Table
, чтобы он содержал метод prepare_items()
, который отвечает за подготовку данных для отображения, а также другие необходимые методы, такие как column_default()
и get_columns()
.
Шаг 3: Создание шорткода
Зарегистрируйте шорткод, который будет использовать созданный вами класс, чтобы результат отображался на обычной странице.
Вот пример кода, который учитывает вышеперечисленные шаги:
if ( ! defined( 'ABSPATH' ) ) {
exit; // Выход, если файл вызван напрямую
}
if ( ! class_exists( 'WP_List_Table' ) ) {
require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
}
class Transactions_List_Table extends WP_List_Table {
public function __construct() {
parent::__construct( [
'singular' => __( 'Transaction', 'textdomain' ),
'plural' => __( 'Transactions', 'textdomain' ),
'ajax' => false
] );
}
public function get_columns() {
return [
'id' => __( 'ID', 'textdomain' ),
'amount' => __( 'Amount', 'textdomain' )
];
}
protected function prepare_items() {
// Здесь вы должны получить данные для вашей таблицы
$this->items = [
[ 'id' => 1, 'amount' => '$100' ],
[ 'id' => 2, 'amount' => '$200' ],
];
}
public function column_default( $item, $column_name ) {
switch ( $column_name ) {
case 'id':
case 'amount':
return $item[ $column_name ];
default:
return '';
}
}
public function display() {
// Вывод таблицы
parent::display();
}
}
function render_transactions_list_page() {
$transactions_table = new Transactions_List_Table();
$transactions_table->prepare_items();
ob_start(); // Начало буферизации вывода
?>
<div class="wrap">
<h2><?php _e( 'Transactions List', 'textdomain' ); ?></h2>
<form method="post">
<?php
$transactions_table->display();
?>
</form>
</div>
<?php
return ob_get_clean(); // Возвращаем весь буферизированный вывод
}
// Добавьте шорткод для отображения таблицы на обычной странице
add_shortcode( 'transactions_table', 'render_transactions_list_page' );
Шаг 4: Использование шорткода
Теперь вы можете добавить шорткод [transactions_table]
на любую страницу или запись WordPress, и он выведет вашу таблицу с данными.
Заключение
С помощью вышеприведенного кода вы сможете успешно создать таблицу в стиле администрирования на обычной странице WordPress. Убедитесь, что вы правильно обрабатываете данные для таблицы и выводите их в соответствии с вашими требованиями.
Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться!