Implementierung der WordPress-WP-Listentabelle

Lesezeit: 4 Minuten

Benutzer-Avatar
Trimantra-Softwarelösung

Ich habe beim Implementieren der WP-Listentabelle die folgende Fehlermeldung erhalten

Schwerwiegender Fehler: Aufruf der undefinierten Funktion convert_to_screen() in …/wp-admin/includes/class-wp-list-table.php in Zeile 88

Ich habe dieses Problem gelöst, indem ich die folgende Zeile eingefügt habe

require_once(ABSPATH . 'wp-admin/includes/template.php' );

Danach funktioniert diese WP-Listentabelle in meinem Plug-in gut. Aber ich bekomme unten Benachrichtigung, während ich mein Plugin aktiviere.

Hinweis: convert_to_screen(), add_meta_box() wurde falsch aufgerufen. Wahrscheinlich direkte Einbeziehung von wp-admin/includes/template.php, um add_meta_box() zu verwenden. Das ist sehr falsch. Hängen Sie stattdessen den Aufruf add_meta_box() in die Aktion add_meta_boxes ein. Weitere Informationen finden Sie unter Debuggen in WordPress. (Diese Nachricht wurde in Version 3.3 hinzugefügt.) in /var/www/wordpress_RND/wordpress3.8.1/wp-includes/functions.php auf Zeile 3049

Hat jemand eine Ahnung von diesem Hinweis. Ich verwende WordPress Version 3.8.1

Unten ist der angeforderte Mindestcode.

define('FRM_PLUGIN_DIR_PATH_INC', trailingslashit( plugin_dir_path( __FILE__ ) ) .'../inc');
if( ! class_exists( 'WP_List_Table' ) ) {
    require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
}
// Commenting below line result in error.
require_once(ABSPATH . 'wp-admin/includes/template.php' );

class Any_Forms_Funtions extends WP_List_Table{


    public function listForm(){
        echo "<div class="wrap"><form>";
        $this->prepare_items();
        $this->display();
        echo "</form></div>";
    }

    function get_columns(){
        $columns = array(
            //'cb'        => '<input type="checkbox" />',
            'booktitle' => 'Title',
            'author'    => 'Author',
            'isbn'      => 'ISBN',
        );
        return $columns;
    }

    function column_default( $item, $column_name ) {
        switch( $column_name ) {
            case 'booktitle':
            case 'author':
            case 'isbn':
                return $item[ $column_name ];
            default:
                return print_r( $item, true ) ; //Show the whole array for troubleshooting purposes
        }
    }

    function prepare_items() {
        $example_data = array(
            array('ID' => 1,'booktitle' => 'Quarter Share', 'author' => 'Rakesh','isbn' => '978-0982514542')
            ,array('ID' => 2,'booktitle' => 'Quarter Share', 'author' => 'Rakesh','isbn' => '978-0982514542')
        );
        $columns = $this->get_columns();
        $hidden = array();
        $sortable = $this->get_sortable_columns();
        $this->_column_headers = array($columns, $hidden, $sortable);
        $this->items = $example_data;
    }
}

Bitte teilen Sie mir mit, ob dies noch benötigt wird.

Benutzer-Avatar
brasophilo

Die einzige Änderung, die ich vorgenommen habe, war das Entfernen der listForm Methode und Hinzufügen der __construct. Funktioniert ohne PHP-Hinweise und ohne Einbinden wp-admin/includes/template.php.

add_action('admin_menu', function () 
{
    add_menu_page(
        'TE', 
        '<span style="color:#e57300;">Table Example</span>', 
        'edit_pages', 
        'table-example', 
            function() { 
                echo '<div class="wrap">';
                echo '<h2>Table Example</h2>';
                new Table_SO_22371861(); 
                echo '</div>';
            },
        'http://sstatic.net/stackexchange/img/favicon.ico',
        1  // create before Dashboard menu item
    );
});
if( !class_exists( 'WP_List_Table' ) )
    require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );

class Table_SO_22371861 extends WP_List_Table{
    public function __construct()
    {
        parent::__construct( array(
            'singular' => 'table example',
            'plural'   => 'table examples',
            'ajax'     => true
        ) );
        $this->prepare_items();
        $this->display();
    }

    function get_columns(){
        $columns = array(
            //'cb'        => '<input type="checkbox" />',
            'booktitle' => 'Title',
            'author'    => 'Author',
            'isbn'      => 'ISBN',
        );
        return $columns;
    }

    function column_default( $item, $column_name ) {
        switch( $column_name ) {
            case 'booktitle':
            case 'author':
            case 'isbn':
                return $item[ $column_name ];
            default:
                return print_r( $item, true ) ; //Show the whole array for troubleshooting purposes
        }
    }

    function prepare_items() {
        $example_data = array(
            array('ID' => 1,'booktitle' => 'Quarter Share', 'author' => 'Rakesh','isbn' => '978-0982514542')
            ,array('ID' => 2,'booktitle' => 'Quarter Share', 'author' => 'Rakesh','isbn' => '978-0982514542')
        );
        $columns = $this->get_columns();
        $hidden = array();
        $sortable = $this->get_sortable_columns();
        $this->_column_headers = array($columns, $hidden, $sortable);
        $this->items = $example_data;
    }
}

Überprüfen Sie Folgendes für ein erweitertes Beispiel: Ich möchte eine Paginierung zu meiner Optionsseite des WordPress-Plugins?

  • Ich hatte gerade das gleiche Problem mit der Fehlermeldung. Mein Problem war, dass ich meine neue Klasse einmal aufgerufen habe, nachdem ich die Klasse WP_List_Table erweitert hatte, und WIEDER in meinem Code, als die Klasse benötigt wurde. Das Entfernen der ersten Instanziierung (unmittelbar nach der Klassenerweiterung) hat den Fehler behoben.

    – Josch

    28. Dezember 2014 um 6:22 Uhr

1385070cookie-checkImplementierung der WordPress-WP-Listentabelle

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy