- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 WordPress 插件,该插件的一部分需要扩展 WP_List_Table 并将在该表中选中的任何项目存储到一个选项中。我已经设法弄清楚如何正确设置和显示所需的表格,但我该如何处理存储选中的选项?
这是我到目前为止所得到的......
class TDBar_List_Table extends WP_List_Table {
// Reference parent constructor
function __construct() {
global $status, $page;
// Set defaults
parent::__construct( array(
'singular' => 'theme',
'plural' => 'themes',
'ajax' => false
));
}
// Set table classes
function get_table_classes() {
return array('widefat', 'wp-list-table', 'themes');
}
// Setup default column
function column_default($item, $column_name) {
switch($column_name) {
case 'Title':
case 'URI':
case'Description':
return $item[$column_name];
default:
return print_r($item, true);
}
}
// Displaying checkboxes!
function column_cb($item) {
return sprintf(
'<input type="checkbox" name="%1$s" id="%2$s" value="checked" />',
//$this->_args['singular'],
$item['Stylesheet'] . '_status',
$item['Stylesheet'] . '_status'
);
}
// Display theme title
function column_title($item) {
return sprintf(
'<strong>%1$s</strong>',
$item['Title']
);
}
// Display theme preview
function column_preview($item) {
if (file_exists(get_theme_root() . '/' . $item['Stylesheet'] . '/screenshot.png')) {
$preview = get_theme_root_uri() . '/' . $item['Stylesheet'] . '/screenshot.png';
} else {
$preview = '';
}
return sprintf(
'<a href="%1$s" class="thickbox" title="%2$s"><img src="%3$s" style="width: 150px;" /></a>',
$preview,
$item['Title'],
$preview
);
}
// Display theme description
function column_description($item) {
if (isset($item['Version'])) {
$version = 'Version ' . $item['Version'];
if (isset($item['Author']) || isset($item['URI']))
$version .= ' | ';
} else {
$version = '';
}
if (isset($item['Author'])) {
$author = 'By ' . $item['Author'];
if (isset($item['URI']))
$author .= ' | ';
} else {
$author = '';
}
if (isset($item['URI'])) {
$uri = $item['URI'];
} else {
$uri = '';
}
return sprintf(
'<div class="theme-description"><p>%1$s</p></div><div class="second theme-version-author-uri">%2$s%3$s%4$s',
$item['Description'],
$version,
$author,
$uri
);
}
// Setup columns
function get_columns() {
$columns = array(
'cb' => '<input type="checkbox" />',
'title' => 'Theme',
'preview' => 'Preview',
'description' => 'Description'
);
return $columns;
}
// Make title column sortable
function get_sortable_columns() {
$sortable_columns = array(
'title' => array('Title', true)
);
return $sortable_columns;
}
// Setup bulk actions
function get_bulk_actions() {
$actions = array(
'update' => 'Update'
);
return $actions;
}
// Handle bulk actions
function process_bulk_action() {
// Define our data source
if (defined('WP_ALLOW_MULTISITE') && WP_ALLOW_MULTISITE == true) {
$themes = get_allowed_themes();
} else {
$themes = get_themes();
}
if ('update' === $this->current_action()) {
foreach ($themes as $theme) {
if ($theme['Stylesheet'] . '_status' == 'checked') {
// Do stuff - here's the problem
}
}
}
}
// Handle data preparation
function prepare_items() {
// How many records per page?
$per_page = 10;
// Define column headers
$columns = $this->get_columns();
$hidden = array();
$sortable = $this->get_sortable_columns();
// Build the array
$this->_column_headers = array($columns, $hidden, $sortable);
// Pass off bulk action
$this->process_bulk_action();
// Define our data source
if (defined('WP_ALLOW_MULTISITE') && WP_ALLOW_MULTISITE == true) {
$themes = get_allowed_themes();
} else {
$themes = get_themes();
}
// Handle sorting
function usort_reorder($a,$b) {
$orderby = (!empty($_REQUEST['orderby'])) ? $_REQUEST['orderby'] : 'Title';
$order = (!empty($_REQUEST['order'])) ? $_REQUEST['order'] : 'asc';
$result = strcmp($a[$orderby], $b[$orderby]);
return ($order === 'asc') ? $result : -$result;
}
usort($themes, 'usort_reorder');
//MAIN STUFF HERE
//for ($i = 0; i < count($themes); $i++) {
//}
// Figure out the current page and how many items there are
$current_page = $this->get_pagenum();
$total_items = count($themes);
// Only show the current page
$themes = array_slice($themes,(($current_page-1)*$per_page),$per_page);
// Display sorted data
$this->items = $themes;
// Register pagination options
$this->set_pagination_args( array(
'total_items' => $total_items,
'per_page' => $per_page,
'total_pages' => ceil($total_items/$per_page)
));
}
}
问题是,我无法正确保存它。我选择我想要的行,点击保存,它就会重置。
最佳答案
我假设您是在讨论表格列表中的复选框,所以这就是处理批量操作的方法。
您需要做的就是向您的类添加两个新方法,并在 prepare_items 方法中对其进行初始化。我在我的一个插件中使用下面的代码来删除或导出,但您也可以轻松地运行更新。
/**
* Define our bulk actions
*
* @since 1.2
* @returns array() $actions Bulk actions
*/
function get_bulk_actions() {
$actions = array(
'delete' => __( 'Delete' , 'visual-form-builder'),
'export-all' => __( 'Export All' , 'visual-form-builder'),
'export-selected' => __( 'Export Selected' , 'visual-form-builder')
);
return $actions;
}
/**
* Process our bulk actions
*
* @since 1.2
*/
function process_bulk_action() {
$entry_id = ( is_array( $_REQUEST['entry'] ) ) ? $_REQUEST['entry'] : array( $_REQUEST['entry'] );
if ( 'delete' === $this->current_action() ) {
global $wpdb;
foreach ( $entry_id as $id ) {
$id = absint( $id );
$wpdb->query( "DELETE FROM $this->entries_table_name WHERE entries_id = $id" );
}
}
}
现在,像这样在 prepare_items() 中调用这个方法:
function prepare_items() {
//Do other stuff in here
/* Handle our bulk actions */
$this->process_bulk_action();
}
有一个很棒的助手插件叫做 Custom List Table Example这使得弄清楚 WP_List_Table 类变得容易得多。
关于wordpress - 在插件管理中扩展 WP_List_Table/处理复选框选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9278772/
当前问题:我已经能够在仪表板管理区域内从我的 WP 的 sql 数据库成功创建各种表列表,以及使用 WP_LIST_TABLE 创建插件但是我遇到了困难关于如何使用短代码。通常我会添加如下内容: a
我对 OOP 并不完全熟悉,但我了解基础知识。我正在创建一个 Wordpress 插件,需要在插件页面上创建一个 (html) 表格。我读到在 WP 3.1 中有一个名为 WP_List_Table
我正在开发一个 WordPress 插件,该插件的一部分需要扩展 WP_List_Table 并将在该表中选中的任何项目存储到一个选项中。我已经设法弄清楚如何正确设置和显示所需的表格,但我该如何处理存
我在我的插件中使用wp_list_table类,我正在获取数据并使用wp_list_table在管理端显示它。但是一列有太多大数据并且它的长度太长,看起来不太好。所以有没有增加列长度的方法,我尝试使用
我在我的插件中使用wp_list_table类,我正在获取数据并使用wp_list_table在管理端显示它。但是一列有太多大数据并且它的长度太长,看起来不太好。所以有没有增加列长度的方法,我尝试使用
我使用 WordPress 插件中的 WP_List_Table 类创建了一个表。它基本上从数据库中输出一些信息。 Id 列在表格内占用了太多空间,我正在尝试减小宽度。有没有办法在 PHP 中执行此操
我正在使用 WP_List_Table 在 WordPress 插件中设置批量操作。我想允许的唯一批量操作是删除。我有一个链接可以删除通过 生成的随机数的项目 wp_create_nonce( 'de
我扩展类WP_List_Table显示自定义数据库表的列表记录。列表是成功的,但我对如何实现下拉过滤器以根据其类别过滤我的自定义数据库表记录感到生气。 请分享任何代码以添加下拉过滤器来过滤我的自定义数
WordPress 插件开发人员使用 WP_List_Table 类在管理面板中构建 HTML 表格。 但是,WordPress 官方文档在 here 中有以下注释. This class's acc
我需要添加对使用 WP_List_Table 搜索或过滤项目的支持 我读过但不知道如何完成这项工作。我已经通过这段代码添加了盒子: function ft_list() { echo '' .
您好,我正在编写一个插件,通过扩展 wordpress wp_list_table 类,我在其中显示了数据库中的各种条目。为了在每一行中显示一些操作链接,我按以下方式使用了此功能。 function
我在类中使用 wp_list_table 时遇到了一个 fatal error ,总的来说,我在类中扩展了 wordpress wp_list_table,然后当我尝试从它实例化一个对象时将它包含到我
我是一名优秀的程序员,十分优秀!