Добавление таблицы в стиле администратора на странице WordPress 4.x

Вопрос или проблема

Добавление таблицы в стиле администратора на странице 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. Убедитесь, что вы правильно обрабатываете данные для таблицы и выводите их в соответствии с вашими требованиями.

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

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

Капча загружается...