Intereting Posts
Как использовать tinyMCE для пользователя «биографическая информация»? Ошибка: переназначение контента другому пользователю не поддерживается на многопользовательском Страница списка авторов: Исключить на основе последней даты публикации файл .php wordpress в файле src iframe в сообщении WordPress Как передать параметр url в поисковом запросе Проблемы с циклом WordPress Изменения, необходимые для создания нового плагина из существующего Уведомление администратора или автора о новом сообщении Как перенести результаты поиска на определенную страницу? Добавить изображение для сообщения с внешнего URL Пользовательский короткий код в виджетах, запущенных в верхней части виджета Пользователь электронной почты при обновлении wordpress Удалите HTML-редактор и визуальные / HTML-вкладки от TinyMCE Как изменить автора изображения с помощью функции при загрузке GravityForms? rewrite_rules () не применяет правила активации плагина только после того, как щелкнуто меню постоянных ссылок

Получить список категорий с именем категории в пользовательском классе WP_List_Table

Я создаю плагин, и я создал пользовательский класс wp_list_table в соответствии с моими потребностями и отображением элементов с помощью внешнего вида wordpress.

Проблема в том, что я не могу перечислить категории с именами категорий.

Я использую данные из таблицы базы данных, а список моих категорий в базе данных находится в списке категорий категорий id

поэтому данные выглядят как

136, 8, 10, 11, 110 

И когда я выводю, что на веб-сайте я получаю список, точно такой же, как запятая

список категорий на моем плагине

Но я хочу отображать каждое название категории вместо простого id, как это, поэтому в конце я хочу, чтобы он отображался, как в списке по умолчанию WordPress, как этот

введите описание изображения здесь

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

Есть идеи, как это сделать?

РЕДАКТИРОВАТЬ:

Вот весь класс, который я сейчас использую

 class custom_feeds_list_table extends WP_List_Table { // declare constructor and give some basic params function __construct() { global $status, $page; $message = null; $type = null; parent::__construct(array( 'singular' => 'custom-feed', 'plural' => 'custom-feeds', )); } //List all columns that we want to display in table function get_columns() { $columns = array( 'cb' => '<input type="checkbox" />', //Render a checkbox instead of text 'feedname' => __('Feed Name', 'vt-translate'), 'provider' => __('Selected provider', 'vt-translate'), 'searchterm' => __('Searchterms', 'vt-translate'), 'numvideos' => __('Videos to pull', 'vt-translate'), 'post_category' => __('Categories', 'vt-translate'), 'feedstatus' => __('Status', 'vt-translate'), ); return $columns; } //Select which columns are sortable function get_sortable_columns() { $sortable_columns = array( 'feedname' => array('feedname', true), 'provider' => array('provider', false), 'searchterm' => array('searchterm',false), 'numvideos' => array('numvideos',false), 'feedstatus' => array('feedstatus', false), ); return $sortable_columns; } // Default column render is required function column_default($item, $column_name) { return $item[$column_name]; } //Bulk action for delete function get_bulk_actions() { $actions = array( 'update' => 'Update', 'enable' => 'Enable', 'disable' => 'Disable', 'delete' => 'Delete' ); return $actions; } //Process bulk action in database function process_bulk_action() { global $wpdb; $custom_table = $wpdb->prefix . 'custom_feeds'; if ('enable' === $this->current_action()) { $ids = isset($_REQUEST['id']) ? $_REQUEST['id'] : array(); if (is_array($ids)) $ids = implode(',', $ids); $this->type = 'updated'; $this->message = __('No feed selected to enable.', 'custom-feeds'); if (!empty($ids)) { $wpdb->query("UPDATE $custom_table SET feedstatus = 1 WHERE id IN($ids)"); $this->type = 'updated'; $this->message = __('Selected feeds are enabled, your website will be updated with enabled feeds at scheduled time.', 'custom-feeds'); } } if ('disable' === $this->current_action()) { $ids = isset($_REQUEST['id']) ? $_REQUEST['id'] : array(); if (is_array($ids)) $ids = implode(',', $ids); $this->type = 'updated'; $this->message = __('No feed selected to disable.', 'custom-feeds'); if (!empty($ids)) { $wpdb->query("UPDATE $custom_table SET feedstatus = 0 WHERE id IN($ids)"); $this->type = 'updated'; $this->message = __('Selected feeds are disabled, your website will no longer get updates of disabled feeds.', 'custom-feeds'); } } if ('delete' === $this->current_action()) { $ids = isset($_REQUEST['id']) ? $_REQUEST['id'] : array(); if (is_array($ids)) $ids = implode(',', $ids); $this->type = 'updated'; $this->message = __('No feed selected to delete.', 'custom-feeds'); if (!empty($ids)) { $wpdb->query("DELETE FROM $custom_table WHERE id IN($ids)"); $this->type = 'updated'; $this->message = __('Selected feeds are deleted, your website will no longer get updates from deleted feeds. ', 'custom-feeds'); } } } //Prepare items to show in list function prepare_items() { global $wpdb; $evg_table = $wpdb->prefix . 'custom_feeds'; $per_page = $this->get_items_per_page('feeds_per_page', 20); $current_page = $this->get_pagenum(); $columns = $this->get_columns(); $hidden = array(); $sortable = $this->get_sortable_columns(); // here we configure table headers, defined in our methods $this->_column_headers = $this->get_column_info(); // process bulk action if any $this->process_bulk_action(); // will be used in pagination settings $total_items = $wpdb->get_var("SELECT COUNT(id) FROM $custom_table"); // prepare query params, as usual current page, order by and order direction $paged = isset($_REQUEST['paged']) ? max(0, intval($_REQUEST['paged']) - 1) : 0; $orderby = (isset($_REQUEST['orderby']) && in_array($_REQUEST['orderby'], array_keys($this->get_sortable_columns()))) ? $_REQUEST['orderby'] : 'id'; $order = (isset($_REQUEST['order']) && in_array($_REQUEST['order'], array('asc', 'desc'))) ? $_REQUEST['order'] : 'desc'; //Define item aray $this->items = $wpdb->get_results($wpdb->prepare("SELECT * FROM $custom_table ORDER BY $orderby $order LIMIT %d OFFSET %d", $per_page, $paged), ARRAY_A); // configure pagination $this->set_pagination_args(array( 'total_items' => $total_items, 'per_page' => $per_page, 'total_pages' => ceil($total_items / $per_page) )); } //Input checkbox for id function column_cb($item) { return sprintf( '<input type="checkbox" name="id[]" value="%s" />', $item['id'] ); } //Display feed name column with buttons function column_feedname($item) { $actions = array( 'edit' => sprintf('<a href="?page=custom-feed&action=edit&id=%s">%s</a>', $item['id'], __('Edit', 'custom-feeds')), 'delete' => sprintf('<a href="?page=%s&action=delete&id=%s">%s</a>', $_REQUEST['page'], $item['id'], __('Delete', 'custom-feeds')), ); return sprintf('%s %s', '<a href="?page=custom-feed&action=edit&id=' . $item['id'] . '">' . $item['feedname'] . '</a>', $this->row_actions($actions) ); } //Display feed status column function column_feedstatus($item) { return sprintf( ($item['feedstatus'] == true) ? '<div style="color:#006505">Active</div>' : '<div style="color:#AA0000">Inactive</div>' ); } //Display category column function column_post_category($item) { return sprintf( $item['post_category'] ); } 

}

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

  return sprintf( $item['post_category'] ); 

который будет возвращать необработанные данные из базы данных, и это только идентификаторы категорий с номерами, разделенными запятой

 136, 8, 10, 11, 110 

Я знаю, если я использую это в теме где-то вроде этого

 $cats = $item['post_category']; 

он вернется

 $cats = 136, 8, 10, 11, 110 

чем

 $categories = get_categories( array('include' => $cats) ); 

и в конце

 foreach($categories as $single_cat){ echo $single_cat->cat_name; } 

он будет отображать имя каждой категории.

Но здесь не так, это не работает в классе wp_list_table по какой-то причине, поэтому я искал какое-то другое решение. Я также посмотрел класс wordpress wp_list_table в включенном файле php, но не смог найти ничего, связанного с категорией.

Solutions Collecting From Web of "Получить список категорий с именем категории в пользовательском классе WP_List_Table"

Очень сложно проверить / отладить этот вопрос, поскольку он зависит от большого количества кода, но он выглядит так, как будто вам просто нужно разбить список, разделенный запятыми, получить данные категории и напечатать имена. get_categories() и wp_list_pluck() должны сделать это довольно легко.

 //Display category column function column_post_category($item) { $c = get_categories(array('include' => $item['post_category'])); $c = wp_list_pluck($c,'name'); $c = implode(', ',$c); return $c; }