我正在开发一个确实必须扩展类WP_List_Table的插件。我已经在我的插件文件中扩展了该类(我不知道这是否是执行此操作的正确方法吗?)并包含WP_List_Table,如下所示:
if(!class_exists('WP_List_Table')){
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
}
Run Code Online (Sandbox Code Playgroud)
然后是扩展类的代码,然后像这样创建了我的表类的实例:
<?php
if ( ! class_exists( 'WP_List_Table' ) ) {
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
}
Class Wp_Ban_User extends WP_List_Table
{
public function __construct()
{
add_action('admin_menu',array($this,'WBU_adminMenu'));
parent::__construct( array(
'singular'=> 'wp_list_text_link', //Singular label
'plural' => 'wp_list_test_links', //plural label, also this well be one of the table css class
'ajax' => false //We won't support Ajax for this table
) );
$this->prepare_items();
$this->display();
}
function get_columns() {
$columns = array(
'id' => 'ID',
'user_login' => 'User Name',
'user_email' => 'User Email'
);
return $columns;
}
function column_default( $item, $column_name ) {
switch( $column_name ) {
case 'id':
case 'user_login':
case 'user_email':
return $item[ $column_name ];
default:
return print_r( $item, true ) ;
}
}
function prepare_items() {
$example_data = array(
array(
'id' => 1,
'user_login' => 'vasim',
'user_email' => 'vasim@abc.com'
),
array(
'id' => 2,
'user_login' => 'Asma',
'user_email' => 'Asma@abc.com'
),
array(
'id' => 3,
'user_login' => 'Nehal',
'user_email' => 'nehal@abc.com'
),
);
$columns = $this->get_columns();
$hidden = array();
$sortable = $this->get_sortable_columns();
$this->_column_headers = array($columns, $hidden, $sortable);
$this->items = $example_data;
}
public function WBU_adminMenu()
{
add_menu_page( 'Currently Logged In User', 'Banned User', 'manage_options', 'ban_admin_init', array($this,'ban_admin_init'));
}
function ban_admin_init(){
global $wpdb;
$sql="SELECT * from {$wpdb->prefix}users";
$sql_result=$wpdb->get_results($sql,'ARRAY_A');
print_r($sql_result);
//$this->items=$sql_result;
}
}
global $Obj_Wp_Ban_User;
$Obj_Wp_Ban_User=new Wp_Ban_User();
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我确实得到了这个错误:
致命错误:在第143行的D:\ xampp \ htdocs \ developplugin \ wp-admin \ includes \ class-wp-list-table.php中调用未定义的函数convert_to_screen()
我做了一些研究,但不知道如何解决。
有人知道如何解决此问题吗?
谢谢你的帮助!
最好的祝福。
小智 6
抱歉我的英语不好,我是法国人。
我已经找到问题了。您的班级已更正(请参阅代码底部):
<?php
/*
Plugin Name: My List Table Example
*/
if ( ! class_exists( 'WP_List_Table' ) ) {
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
}
Class Wp_Ban_User extends WP_List_Table
{
public function __construct()
{
parent::__construct( array(
'singular'=> 'wp_list_text_link', //Singular label
'plural' => 'wp_list_test_links', //plural label, also this well be one of the table css class
'ajax' => false //We won't support Ajax for this table
) );
$this->prepare_items();
$this->display();
}
function get_columns() {
$columns = array(
'id' => 'ID',
'user_login' => 'User Name',
'user_email' => 'User Email'
);
return $columns;
}
function column_default( $item, $column_name ) {
switch( $column_name ) {
case 'id':
case 'user_login':
case 'user_email':
return $item[ $column_name ];
default:
return print_r( $item, true ) ;
}
}
function prepare_items() {
$example_data = array(
array(
'id' => 1,
'user_login' => 'vasim',
'user_email' => 'vasim@abc.com'
),
array(
'id' => 2,
'user_login' => 'Asma',
'user_email' => 'Asma@abc.com'
),
array(
'id' => 3,
'user_login' => 'Nehal',
'user_email' => 'nehal@abc.com'
),
);
$columns = $this->get_columns();
$hidden = array();
$sortable = $this->get_sortable_columns();
$this->_column_headers = array($columns, $hidden, $sortable);
$this->items = $example_data;
}
}
// Render your admin menu outside the class
function WBU_adminMenu()
{
add_menu_page( 'Currently Logged In User', 'Banned User', 'manage_options', 'render_admin_page', 'render_admin_page');
}
// Create your menu outside the class
add_action('admin_menu','WBU_adminMenu');
// Render your page outside the class
function render_admin_page(){
global $wpdb;
$Obj_Wp_Ban_User=new Wp_Ban_User();
$Obj_Wp_Ban_User->prepare_items();
$sql="SELECT * from {$wpdb->prefix}users";
$sql_result=$wpdb->get_results($sql,'ARRAY_A');
print_r($sql_result);
}
Run Code Online (Sandbox Code Playgroud)
这很简单:要解决该错误,Call to undefined function convert_to_screen()您需要:
3天后,它对我有用!
| 归档时间: |
|
| 查看次数: |
3320 次 |
| 最近记录: |