WP_List_Table::print_table_description()publicWP 6.3.0

Print a table description with information about current sorting and order.

For the table initial view, information about initial orderby and order should be provided via get_sortable_columns().

Method of the class: WP_List_Table{}

No Hooks.

Return

null. Nothing (null).

Usage

$WP_List_Table = new WP_List_Table();
$WP_List_Table->print_table_description();

Changelog

Since 6.3.0 Introduced.

WP_List_Table::print_table_description() code WP 6.7.1

public function print_table_description() {
	list( $columns, $hidden, $sortable ) = $this->get_column_info();

	if ( empty( $sortable ) ) {
		return;
	}

	// When users click on a column header to sort by other columns.
	if ( isset( $_GET['orderby'] ) ) {
		$current_orderby = $_GET['orderby'];
		// In the initial view there's no orderby parameter.
	} else {
		$current_orderby = '';
	}

	// Not in the initial view and descending order.
	if ( isset( $_GET['order'] ) && 'desc' === $_GET['order'] ) {
		$current_order = 'desc';
	} else {
		// The initial view is not always 'asc', we'll take care of this below.
		$current_order = 'asc';
	}

	foreach ( array_keys( $columns ) as $column_key ) {

		if ( isset( $sortable[ $column_key ] ) ) {
			$orderby       = isset( $sortable[ $column_key ][0] ) ? $sortable[ $column_key ][0] : '';
			$desc_first    = isset( $sortable[ $column_key ][1] ) ? $sortable[ $column_key ][1] : false;
			$abbr          = isset( $sortable[ $column_key ][2] ) ? $sortable[ $column_key ][2] : '';
			$orderby_text  = isset( $sortable[ $column_key ][3] ) ? $sortable[ $column_key ][3] : '';
			$initial_order = isset( $sortable[ $column_key ][4] ) ? $sortable[ $column_key ][4] : '';

			if ( ! is_string( $orderby_text ) || '' === $orderby_text ) {
				return;
			}
			/*
			 * We're in the initial view and there's no $_GET['orderby'] then check if the
			 * initial sorting information is set in the sortable columns and use that.
			 */
			if ( '' === $current_orderby && $initial_order ) {
				// Use the initially sorted column $orderby as current orderby.
				$current_orderby = $orderby;
				// Use the initially sorted column asc/desc order as initial order.
				$current_order = $initial_order;
			}

			/*
			 * True in the initial view when an initial orderby is set via get_sortable_columns()
			 * and true in the sorted views when the actual $_GET['orderby'] is equal to $orderby.
			 */
			if ( $current_orderby === $orderby ) {
				/* translators: Hidden accessibility text. */
				$asc_text = __( 'Ascending.' );
				/* translators: Hidden accessibility text. */
				$desc_text  = __( 'Descending.' );
				$order_text = 'asc' === $current_order ? $asc_text : $desc_text;
				echo '<caption class="screen-reader-text">' . $orderby_text . ' ' . $order_text . '</caption>';

				return;
			}
		}
	}
}