> Show Custom Taxonomy Filters functionality. */ public $post_type; /** * Show featured images column in list tables for pages and post types that support featured image * * @since 1.0.0 */ public function show_featured_image_column() { $post_types = get_post_types( array( 'public' => true, ), 'names' ); foreach ( $post_types as $post_type_key => $post_type_name ) { if ( post_type_supports( $post_type_key, 'thumbnail' ) ) { add_filter( "manage_{$post_type_name}_posts_columns", [$this, 'add_featured_image_column'], 999 ); add_action( "manage_{$post_type_name}_posts_custom_column", [$this, 'add_featured_image'], 10, 2 ); } } } /** * Add a column called Featured Image as the first column * * @param mixed $columns * @return void * @since 1.0.0 */ public function add_featured_image_column( $columns ) { $new_columns = array(); foreach ( $columns as $key => $value ) { if ( 'title' == $key ) { // We add featured image column before the 'title' column $new_columns['asenha-featured-image'] = __( 'Featured Image', 'admin-site-enhancements' ); } if ( 'thumb' == $key ) { // For WooCommerce products, we add featured image column before it's native thumbnail column $new_columns['asenha-featured-image'] = __( 'Product Image', 'admin-site-enhancements' ); } $new_columns[$key] = $value; } // Replace WooCommerce thumbnail column with ASE featured image column if ( array_key_exists( 'thumb', $new_columns ) ) { unset($new_columns['thumb']); } return $new_columns; } /** * Echo featured image's in thumbnail size to a column * * @param mixed $column_name * @param mixed $id * @since 1.0.0 */ public function add_featured_image( $column_name, $id ) { if ( 'asenha-featured-image' === $column_name ) { if ( has_post_thumbnail( $id ) ) { $size = 'thumbnail'; echo '' . get_the_post_thumbnail( $id, $size, '' ) . ''; } else { echo ''; } } } /** * Show excerpt column in list tables for pages and post types that support excerpt. * * @since 1.0.0 */ public function show_excerpt_column() { $post_types = get_post_types( array( 'public' => true, ), 'names' ); foreach ( $post_types as $post_type_key => $post_type_name ) { if ( post_type_supports( $post_type_key, 'excerpt' ) ) { add_filter( "manage_{$post_type_name}_posts_columns", [$this, 'add_excerpt_column'] ); add_action( "manage_{$post_type_name}_posts_custom_column", [$this, 'add_excerpt'], 10, 2 ); } } } /** * Add a column called Excerpt as the first column * * @param mixed $columns * @return void * @since 1.0.0 */ public function add_excerpt_column( $columns ) { $new_columns = array(); foreach ( $columns as $key => $value ) { $new_columns[$key] = $value; if ( $key == 'title' ) { $new_columns['asenha-excerpt'] = __( 'Excerpt', 'admin-site-enhancements' ); } } return $new_columns; } /** * Echo featured image's in thumbnail size to a column * * @param mixed $column_name * @param mixed $id * @since 1.0.0 */ public function add_excerpt( $column_name, $id ) { if ( 'asenha-excerpt' === $column_name ) { $excerpt = wp_strip_all_tags( get_the_excerpt( $id ) ); // about 310 characters $excerpt = substr( $excerpt, 0, 160 ); // truncate to 160 characters $short_excerpt = substr( $excerpt, 0, strrpos( $excerpt, ' ' ) ); echo wp_kses_post( $short_excerpt ); } } /** * Show last modified column for pages, posts and CPTs * * @since 7.4.0 */ public function show_last_modified_column() { foreach ( get_post_types() as $post_type ) { add_filter( 'manage_' . $post_type . '_posts_columns', [$this, 'add_last_modified_column'], 10, 1 ); add_action( 'manage_' . $post_type . '_posts_custom_column', [$this, 'show_last_modified_datetime'], 10, 2 ); add_filter( 'manage_edit-' . $post_type . '_sortable_columns', [$this, 'make_last_modified_column_sortable'], 10, 1 ); } } /** * Add a column called Last Modified * * @since 7.4.0 */ public function add_last_modified_column( $columns ) { $new_columns = array(); foreach ( $columns as $key => $value ) { $new_columns[$key] = $value; if ( $key == 'date' ) { $new_columns['asenha-last-modified'] = __( 'Last Modified', 'admin-site-enhancements' ); } } return $new_columns; } /** * Output the last modified date time for each post * * @since 7.4.0 */ public function show_last_modified_datetime( $column_name, $id ) { if ( 'asenha-last-modified' == $column_name ) { $modified_date_time_unix = strtotime( get_post_field( 'post_modified_gmt', $id ) ); echo '' . wp_date( get_option( 'date_format' ), $modified_date_time_unix ) . '
' . wp_date( get_option( 'time_format' ), $modified_date_time_unix ) . '
'; } } /** * Make last modified column sortable * * @since 7.4.0 */ public function make_last_modified_column_sortable( $columns ) { $columns['asenha-last-modified'] = 'modified'; return $columns; } /** * Add ID column list table of pages, posts, custom post types, media, taxonomies, custom taxonomies, users amd comments * * @since 1.0.0 */ public function show_id_column() { // For pages and hierarchical post types list table add_filter( 'manage_pages_columns', [$this, 'add_id_column'] ); add_action( 'manage_pages_custom_column', [$this, 'add_id_echo_value'], 10, 2 ); // For posts and non-hierarchical custom posts list table add_filter( 'manage_posts_columns', [$this, 'add_id_column'] ); add_action( 'manage_posts_custom_column', [$this, 'add_id_echo_value'], 10, 2 ); // For media list table add_filter( 'manage_media_columns', [$this, 'add_id_column'] ); add_action( 'manage_media_custom_column', [$this, 'add_id_echo_value'], 10, 2 ); // For list table of all taxonomies $taxonomies = get_taxonomies( [ 'public' => true, ], 'names' ); foreach ( $taxonomies as $taxonomy ) { add_filter( 'manage_edit-' . $taxonomy . '_columns', [$this, 'add_id_column'] ); add_action( 'manage_' . $taxonomy . '_custom_column', [$this, 'add_id_return_value'], 10, 3 ); } // For users list table add_filter( 'manage_users_columns', [$this, 'add_id_column'] ); add_action( 'manage_users_custom_column', [$this, 'add_id_return_value'], 10, 3 ); // For comments list table add_filter( 'manage_edit-comments_columns', [$this, 'add_id_column'] ); add_action( 'manage_comments_custom_column', [$this, 'add_id_echo_value'], 10, 3 ); } /** * Add a column called ID * * @param mixed $columns * @return void * @since 1.0.0 */ public function add_id_column( $columns ) { $columns['asenha-id'] = 'ID'; return $columns; } /** * Echo post ID value to a column * * @param mixed $column_name * @param mixed $id * @since 1.0.0 */ public function add_id_echo_value( $column_name, $id ) { if ( 'asenha-id' === $column_name ) { echo esc_html( $id ); } } /** * Return post ID value to a column * * @param mixed $value * @param mixed $column_name * @param mixed $id * @since 1.0.0 */ public function add_id_return_value( $value, $column_name, $id ) { if ( 'asenha-id' === $column_name ) { $value = $id; } return $value; } /** * Add file size column to media library * * @since 6.9.5 */ public function add_column_file_size( $columns ) { $columns['asenha-file-size'] = __( 'File Size', 'admin-site-enhancements' ); return $columns; } /** * Display the file size value * * @since 6.9.5 */ public function display_file_size( $column_name, $attachment_id ) { if ( 'asenha-file-size' != $column_name ) { return; } $file_size = filesize( get_attached_file( $attachment_id ) ); $file_size = size_format( $file_size, 1 ); // Show one decimal point echo esc_html( $file_size ); } /** * Add file size column to media library * * @since 6.9.5 */ public function add_media_styles() { echo ''; } /** * Add ID in the action row of list tables for pages, posts, custom post types, media, taxonomies, custom taxonomies, users amd comments * * @since 4.7.4 */ public function show_id_in_action_row() { add_filter( 'page_row_actions', array($this, 'add_id_in_action_row'), 99, 2 ); add_filter( 'post_row_actions', array($this, 'add_id_in_action_row'), 99, 2 ); add_filter( 'cat_row_actions', array($this, 'add_id_in_action_row'), 99, 2 ); add_filter( 'tag_row_actions', array($this, 'add_id_in_action_row'), 99, 2 ); add_filter( 'media_row_actions', array($this, 'add_id_in_action_row'), 99, 2 ); add_filter( 'comment_row_actions', array($this, 'add_id_in_action_row'), 99, 2 ); add_filter( 'user_row_actions', array($this, 'add_id_in_action_row'), 99, 2 ); } /** * Output the ID in the action row * * @since 4.7.4 */ public function add_id_in_action_row( $actions, $object ) { if ( current_user_can( 'edit_posts' ) ) { // For pages, posts, custom post types, media/attachments, users if ( property_exists( $object, 'ID' ) ) { $id = $object->ID; } // For taxonomies if ( property_exists( $object, 'term_id' ) ) { $id = $object->term_id; } // For comments if ( property_exists( $object, 'comment_ID' ) ) { $id = $object->comment_ID; } $actions['asenha-list-table-item-id'] = 'ID: ' . $id . ''; } return $actions; } /** * Show last modified column for pages, posts and CPTs * * @since 7.4.0 */ public function hide_date_column() { foreach ( get_post_types() as $post_type ) { add_filter( 'manage_' . $post_type . '_posts_columns', [$this, 'remove_date_column'], 10, 1 ); } } /** * Add a column called Last Modified * * @since 7.4.0 */ public function remove_date_column( $columns ) { unset($columns['date']); return $columns; } /** * Hide comments column in list tables for pages, post types that support comments, and alse media/attachments. * * @since 1.0.0 */ public function hide_comments_column() { $post_types = get_post_types( array( 'public' => true, ), 'names' ); foreach ( $post_types as $post_type_key => $post_type_name ) { if ( post_type_supports( $post_type_key, 'comments' ) ) { if ( 'attachment' != $post_type_name ) { // For list tables of pages, posts and other post types add_filter( "manage_{$post_type_name}_posts_columns", [$this, 'remove_comment_column'] ); } else { // For list table of media/attachment add_filter( 'manage_media_columns', [$this, 'remove_comment_column'] ); } } } } /** * Add a column called ID * * @param mixed $columns * @return void * @since 1.0.0 */ public function remove_comment_column( $columns ) { unset($columns['comments']); return $columns; } /** * Hide tags column in list tables for posts. * * @since 1.0.0 */ public function hide_post_tags_column() { $post_types = get_post_types( array( 'public' => true, ), 'names' ); foreach ( $post_types as $post_type_key => $post_type_name ) { if ( $post_type_name == 'post' ) { add_filter( "manage_posts_columns", [$this, 'remove_post_tags_column'] ); } } } /** * Add a column called ID * * @param mixed $columns * @return void * @since 1.0.0 */ public function remove_post_tags_column( $columns ) { unset($columns['tags']); return $columns; } }