WP_List_Table::__construct( array|string $args = array() )



The child class should call this constructor from its own constructor to override the default $args.


Array or string of arguments.
  • plural string
    Plural value used for labels and the objects being listed.
    This affects things such as CSS class-names and nonces used in the list table, e.g. 'posts'.
  • singular string
    Singular label for an object being listed, e.g. 'post'.
    Default empty
  • ajax bool
    Whether the list table supports Ajax. This includes loading and sorting data, for example. If true, the class will call the _js_vars() method in the footer to provide variables to any scripts handling Ajax events. Default false.
  • screen string
    String containing the hook name used to determine the current screen. If left null, the current screen will be automatically set.
    Default null.


More Information

This sets default arguments and filters. Developers should override this, calling the parent constructor to provide values for singular and plural labels, as well as whether the class supports AJAX.


public function __construct( $args = array() ) {
	$args = wp_parse_args(
			'plural'   => '',
			'singular' => '',
			'ajax'     => false,
			'screen'   => null,

	$this->screen = convert_to_screen( $args['screen'] );

	add_filter( "manage_{$this->screen->id}_columns", array( $this, 'get_columns' ), 0 );

	if ( ! $args['plural'] ) {
		$args['plural'] = $this->screen->base;

	$args['plural']   = sanitize_key( $args['plural'] );
	$args['singular'] = sanitize_key( $args['singular'] );

	$this->_args = $args;

	if ( $args['ajax'] ) {
		// wp_enqueue_script( 'list-table' );
		add_action( 'admin_footer', array( $this, '_js_vars' ) );

	if ( empty( $this->modes ) ) {
		$this->modes = array(
			'list'    => __( 'Compact view' ),
			'excerpt' => __( 'Extended view' ),



User Contributed Notes

You must log in before being able to contribute a note or feedback.