';
$link = "%s";
comments_number(
sprintf( $link, /* translators: comment count link */ _x( '0', 'comment count' ) ),
sprintf( $link, /* translators: comment count link */ _x( '1', 'comment count' ) ),
sprintf( $link, /* translators: comment count link: % will be substituted by comment count */ _x( '%', 'comment count' ) )
);
if ( $pending_comments )
echo '';
}
/**
* Get the current page number
*
* @since 3.1.0
* @access protected
*
* @return int
*/
function get_pagenum( $query_var = 'paged' ) {
$pagenum = isset( $_REQUEST[$query_var] ) ? absint( $_REQUEST[$query_var] ) : 0;
return max( 1, $pagenum );
}
/**
* Get number of items to display on a single page
*
* @since 3.1.0
* @access protected
*
* @return int
*/
function get_items_per_page( $option, $default = 20 ) {
$per_page = (int) get_user_option( $option );
if ( empty( $per_page ) || $per_page < 1 )
$per_page = $default;
return (int) apply_filters( $option, $per_page );
}
/**
* Display the pagination.
*
* @since 3.1.0
* @access protected
*/
function pagination() {
if ( $this->_pagination ) {
echo $this->_pagination;
return;
}
if ( empty( $this->_pagination_args ) )
return;
extract( $this->_pagination_args );
if ( $total_pages < 2 )
return;
$output = '' . sprintf( _n( '1 item', '%s items', $total_items ), number_format_i18n( $total_items ) ) . '';
$current = $this->get_pagenum( $query_var );
$current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$page_links = array();
$page_links[] = sprintf( "%s",
'first-page',
esc_attr__( 'Go to the first page' ),
esc_url( remove_query_arg( $query_var, $current_url ) ),
'««'
);
$page_links[] = sprintf( "%s",
'prev-page',
esc_attr__( 'Go to the previous page' ),
esc_url( add_query_arg( $query_var, max( 1, $current-1 ), $current_url ) ),
'«'
);
$html_current_page = sprintf( "",
esc_attr__( 'Current page' ),
esc_attr( $query_var ),
number_format_i18n( $current ),
strlen( $total_pages )
);
$html_total_pages = sprintf( "%s", number_format_i18n( $total_pages ) );
$page_links[] = sprintf( _x( '%s of %s', 'paging' ), $html_current_page, $html_total_pages );
$page_links[] = sprintf( "%s",
'next-page',
esc_attr__( 'Go to the next page' ),
esc_url( add_query_arg( $query_var, min( $total_pages, $current+1 ), $current_url ) ),
'»'
);
$page_links[] = sprintf( "%s",
'last-page',
esc_attr__( 'Go to the last page' ),
esc_url( add_query_arg( $query_var, $total_pages, $current_url ) ),
'»»'
);
$output .= join( "\n", $page_links );
$this->_pagination = "
$output
";
echo $this->_pagination;
}
/**
* Get a list of columns. The format is internal_name => title
*
* @since 3.1.0
* @access protected
*
* @return array
*/
function get_columns() {
die( 'function WP_List_Table::get_columns() must be over-ridden in a sub-class.' );
}
/**
* Get a list of sortable columns. The format is internal_name => orderby
*
* @since 3.1.0
* @access protected
*
* @return array
*/
function get_sortable_columns() {
return array();
}
/**
* Get a list of all, hidden and sortable columns, with filter applied
*
* @since 3.1.0
* @access protected
*
* @return array
*/
function get_column_info() {
if ( !isset( $this->_column_headers ) ) {
$columns = get_column_headers( $this->_screen );
$hidden = get_hidden_columns( $this->_screen );
$sortable = apply_filters( 'manage_' . $this->_screen->id . '_sortable_columns', $this->get_sortable_columns() );
$this->_column_headers = array( $columns, $hidden, $sortable );
}
return $this->_column_headers;
}
/**
* Print column headers, accounting for hidden and sortable columns.
*
* @since 3.1.0
* @access protected
*
* @param bool $with_id Wether to set the id attribute or not
*/
function print_column_headers( $with_id = true ) {
$screen = $this->_screen;
list( $columns, $hidden, $sortable ) = $this->get_column_info();
$current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
if ( isset( $_GET['orderby'] ) )
$current_orderby = $_GET['orderby'];
else
$current_orderby = '';
if ( isset( $_GET['order'] ) && 'desc' == $_GET['order'] )
$current_order = 'desc';
else
$current_order = 'asc';
foreach ( $columns as $column_key => $column_display_name ) {
$class = array( 'manage-column', "column-$column_key" );
$style = '';
if ( in_array( $column_key, $hidden ) )
$style = 'display:none;';
$style = ' style="' . $style . '"';
if ( 'cb' == $column_key )
$class[] = 'check-column';
elseif ( in_array( $column_key, array( 'posts', 'comments', 'links' ) ) )
$class[] = 'num';
if ( isset( $sortable[$column_key] ) ) {
$orderby = $sortable[$column_key];
if ( $current_orderby == $orderby ) {
$order = 'asc' == $current_order ? 'desc' : 'asc';
$class[] = "sorted-$current_order";
} else {
$order = 'asc';
$class[] = 'sortable';
}
$column_display_name = '' . $column_display_name . '';
$column_display_name .= '';
}
$id = $with_id ? "id='$column_key'" : '';
if ( !empty( $class ) )
$class = "class='" . join( ' ', $class ) . "'";
echo "
$column_display_name
";
}
}
/**
* Display the table or a message if there are no items
*
* @since 3.1.0
* @access public
*/
function display() {
if ( $this->has_items() ) {
$this->display_table();
} else {
echo ' ';
$this->extra_tablenav( 'top' );
echo ' ';
echo '
';
$this->no_items();
echo '
';
}
}
/**
* Get a list of CSS classes for the
tag
*
* @since 3.1.0
* @access protected
*
* @return array
*/
function get_table_classes() {
extract( $this->_args );
return array( 'widefat', 'fixed', $plural );
}
/**
* Display the full table
*
* @since 3.1.0
* @access public
*/
function display_table() {
extract( $this->_args );
$this->display_tablenav( 'top' );
?>
print_column_headers(); ?>
print_column_headers( false ); ?>
>
display_rows(); ?>
display_tablenav( 'bottom' );
}
/**
* Generate the table navigation above or below the table
*
* @since 3.1.0
* @access protected
*/
function display_tablenav( $which ) {
if ( 'top' == $which )
wp_nonce_field( 'bulk-' . $this->_args['plural'] );
?>