我正在开发一个插件,我必须扩展类WP_List_Table.我已经在我的插件文件中扩展了类(我不知道这是否是正确的方法?)并包含WP_List_Table,如下所示:
if(!class_exists('WP_List_Table')){
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
}
然后是扩展类的代码,然后我创建了一个我的表类的实例,如下所示:
<?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();
但是当我这样做时,我确实得到了这个错误:
Fatal error: Call to undefined function convert_to_screen() in
D:\xampp\htdocs\developplugin\wp-admin\includes\class-wp-list-table.php
on line 143
我做了一些研究,但不明白如何解决它.
有谁知道如何解决这个问题?
谢谢你的帮助!
最好的祝福.
最佳答案 抱歉我的英语不好,我是法国人.
我发现了这个问题.您的课程已更正(请参阅代码底部):
<?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);
}
这个简单:解决错误调用未定义函数convert_to_screen()你需要:
>在课堂外添加菜单
>在课堂外添加admin_menu操作
>在课堂外渲染管理页面
3天后,它对我有用!