2010-10-24 22:57:43 -04:00
< ? php
/**
2015-10-17 11:13:25 -04:00
* List Table API : WP_Terms_List_Table class
2010-10-24 22:57:43 -04:00
*
* @ package WordPress
2015-10-17 11:13:25 -04:00
* @ subpackage Administration
* @ since 3.1 . 0
*/
/**
* Core class used to implement displaying terms in a list table .
*
2010-10-25 00:04:18 -04:00
* @ since 3.1 . 0
2011-01-16 16:47:24 -05:00
* @ access private
2015-10-17 11:13:25 -04:00
*
* @ see WP_List_Table
2010-10-24 22:57:43 -04:00
*/
2010-11-04 04:07:03 -04:00
class WP_Terms_List_Table extends WP_List_Table {
2010-10-24 22:57:43 -04:00
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public $callback_args ;
2010-10-24 22:57:43 -04:00
2015-01-12 11:23:22 -05:00
private $level ;
2014-08-09 22:18:17 -04:00
/**
* Constructor .
2014-09-04 11:23:16 -04:00
*
2014-08-09 22:18:17 -04:00
* @ since 3.1 . 0
2014-08-09 22:22:16 -04:00
* @ access public
2014-08-09 22:18:17 -04:00
*
* @ see WP_List_Table :: __construct () for more information on default arguments .
*
2015-05-28 17:41:30 -04:00
* @ global string $post_type
* @ global string $taxonomy
* @ global string $action
* @ global object $tax
*
2014-08-09 22:18:17 -04:00
* @ param array $args An associative array of arguments .
2014-09-04 11:23:16 -04:00
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function __construct ( $args = array () ) {
2012-09-19 08:43:31 -04:00
global $post_type , $taxonomy , $action , $tax ;
2010-10-24 22:57:43 -04:00
2012-09-19 08:43:31 -04:00
parent :: __construct ( array (
'plural' => 'tags' ,
'singular' => 'tag' ,
'screen' => isset ( $args [ 'screen' ] ) ? $args [ 'screen' ] : null ,
) );
$action = $this -> screen -> action ;
$post_type = $this -> screen -> post_type ;
$taxonomy = $this -> screen -> taxonomy ;
2010-10-24 22:57:43 -04:00
if ( empty ( $taxonomy ) )
$taxonomy = 'post_tag' ;
2012-09-19 08:43:31 -04:00
if ( ! taxonomy_exists ( $taxonomy ) )
2016-07-17 12:15:34 -04:00
wp_die ( __ ( 'Invalid taxonomy.' ) );
2010-10-24 22:57:43 -04:00
$tax = get_taxonomy ( $taxonomy );
2012-09-19 08:43:31 -04:00
// @todo Still needed? Maybe just the show_ui part.
2011-10-29 01:30:57 -04:00
if ( empty ( $post_type ) || ! in_array ( $post_type , get_post_types ( array ( 'show_ui' => true ) ) ) )
2010-10-24 22:57:43 -04:00
$post_type = 'post' ;
}
2015-05-29 16:17:26 -04:00
/**
*
* @ return bool
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function ajax_user_can () {
2012-09-19 08:43:31 -04:00
return current_user_can ( get_taxonomy ( $this -> screen -> taxonomy ) -> cap -> manage_terms );
2010-10-24 22:57:43 -04:00
}
2015-05-29 17:32:24 -04:00
/**
* @ access public
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function prepare_items () {
2012-09-19 08:43:31 -04:00
$tags_per_page = $this -> get_items_per_page ( 'edit_' . $this -> screen -> taxonomy . '_per_page' );
2010-10-24 22:57:43 -04:00
2015-09-22 02:06:25 -04:00
if ( 'post_tag' === $this -> screen -> taxonomy ) {
2014-02-04 02:56:12 -05:00
/**
2016-05-22 14:01:30 -04:00
* Filters the number of terms displayed per page for the Tags list table .
2014-02-04 02:56:12 -05:00
*
* @ since 2.8 . 0
*
* @ param int $tags_per_page Number of tags to be displayed . Default 20.
*/
2010-10-24 22:57:43 -04:00
$tags_per_page = apply_filters ( 'edit_tags_per_page' , $tags_per_page );
2014-02-04 02:56:12 -05:00
/**
2016-05-22 14:01:30 -04:00
* Filters the number of terms displayed per page for the Tags list table .
2014-02-04 02:56:12 -05:00
*
* @ since 2.7 . 0
* @ deprecated 2.8 . 0 Use edit_tags_per_page instead .
*
* @ param int $tags_per_page Number of tags to be displayed . Default 20.
*/
$tags_per_page = apply_filters ( 'tagsperpage' , $tags_per_page );
2015-09-22 02:06:25 -04:00
} elseif ( 'category' === $this -> screen -> taxonomy ) {
2014-02-04 02:56:12 -05:00
/**
2016-05-22 14:01:30 -04:00
* Filters the number of terms displayed per page for the Categories list table .
2014-02-04 02:56:12 -05:00
*
* @ since 2.8 . 0
*
* @ param int $tags_per_page Number of categories to be displayed . Default 20.
*/
$tags_per_page = apply_filters ( 'edit_categories_per_page' , $tags_per_page );
2010-10-24 22:57:43 -04:00
}
2013-03-01 12:00:25 -05:00
$search = ! empty ( $_REQUEST [ 's' ] ) ? trim ( wp_unslash ( $_REQUEST [ 's' ] ) ) : '' ;
2010-10-24 22:57:43 -04:00
$args = array (
'search' => $search ,
'page' => $this -> get_pagenum (),
'number' => $tags_per_page ,
);
if ( ! empty ( $_REQUEST [ 'orderby' ] ) )
2013-03-01 12:00:25 -05:00
$args [ 'orderby' ] = trim ( wp_unslash ( $_REQUEST [ 'orderby' ] ) );
2010-10-24 22:57:43 -04:00
if ( ! empty ( $_REQUEST [ 'order' ] ) )
2013-03-01 12:00:25 -05:00
$args [ 'order' ] = trim ( wp_unslash ( $_REQUEST [ 'order' ] ) );
2010-10-24 22:57:43 -04:00
$this -> callback_args = $args ;
$this -> set_pagination_args ( array (
2012-09-19 08:43:31 -04:00
'total_items' => wp_count_terms ( $this -> screen -> taxonomy , compact ( 'search' ) ),
2010-10-24 22:57:43 -04:00
'per_page' => $tags_per_page ,
) );
}
2011-01-05 23:11:14 -05:00
2015-05-29 16:17:26 -04:00
/**
*
* @ return bool
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function has_items () {
2010-12-17 06:41:59 -05:00
// todo: populate $this->items in prepare_items()
return true ;
}
2010-10-24 22:57:43 -04:00
2015-05-29 17:32:24 -04:00
/**
* @ access public
*/
2015-01-03 01:20:21 -05:00
public function no_items () {
echo get_taxonomy ( $this -> screen -> taxonomy ) -> labels -> not_found ;
}
2015-05-29 16:17:26 -04:00
/**
*
* @ return array
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
protected function get_bulk_actions () {
2010-10-24 22:57:43 -04:00
$actions = array ();
$actions [ 'delete' ] = __ ( 'Delete' );
return $actions ;
}
2015-05-29 16:17:26 -04:00
/**
*
* @ return string
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function current_action () {
2015-09-22 02:06:25 -04:00
if ( isset ( $_REQUEST [ 'action' ] ) && isset ( $_REQUEST [ 'delete_tags' ] ) && ( 'delete' === $_REQUEST [ 'action' ] || 'delete' === $_REQUEST [ 'action2' ] ) )
2010-10-24 22:57:43 -04:00
return 'bulk-delete' ;
return parent :: current_action ();
}
2015-05-29 16:17:26 -04:00
/**
*
* @ return array
*/
2014-07-11 23:27:14 -04:00
public function get_columns () {
2010-10-24 22:57:43 -04:00
$columns = array (
'cb' => '<input type="checkbox" />' ,
2011-06-10 18:13:26 -04:00
'name' => _x ( 'Name' , 'term name' ),
2010-10-24 22:57:43 -04:00
'description' => __ ( 'Description' ),
'slug' => __ ( 'Slug' ),
);
2015-09-22 02:06:25 -04:00
if ( 'link_category' === $this -> screen -> taxonomy ) {
2010-10-24 22:57:43 -04:00
$columns [ 'links' ] = __ ( 'Links' );
2010-11-08 19:59:49 -05:00
} else {
2014-08-01 14:32:15 -04:00
$columns [ 'posts' ] = _x ( 'Count' , 'Number/count of items' );
2010-11-08 19:59:49 -05:00
}
2010-10-24 22:57:43 -04:00
return $columns ;
}
2015-05-29 16:17:26 -04:00
/**
*
* @ return array
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
protected function get_sortable_columns () {
2010-10-24 22:57:43 -04:00
return array (
'name' => 'name' ,
'description' => 'description' ,
'slug' => 'slug' ,
'posts' => 'count' ,
'links' => 'count'
);
}
2015-05-29 17:32:24 -04:00
/**
* @ access public
*/
2014-07-13 18:09:16 -04:00
public function display_rows_or_placeholder () {
2012-09-19 08:43:31 -04:00
$taxonomy = $this -> screen -> taxonomy ;
2010-10-24 22:57:43 -04:00
$args = wp_parse_args ( $this -> callback_args , array (
'page' => 1 ,
'number' => 20 ,
'search' => '' ,
'hide_empty' => 0
) );
2014-05-13 01:37:14 -04:00
$page = $args [ 'page' ];
2014-07-17 05:14:16 -04:00
// Set variable because $args['number'] can be subsequently overridden.
2014-05-13 01:37:14 -04:00
$number = $args [ 'number' ];
2010-10-24 22:57:43 -04:00
$args [ 'offset' ] = $offset = ( $page - 1 ) * $number ;
2014-07-17 05:14:16 -04:00
// Convert it to table rows.
2010-10-24 22:57:43 -04:00
$count = 0 ;
2011-01-05 23:11:14 -05:00
2014-05-13 01:37:14 -04:00
if ( is_taxonomy_hierarchical ( $taxonomy ) && ! isset ( $args [ 'orderby' ] ) ) {
2010-10-24 22:57:43 -04:00
// We'll need the full set of terms then.
$args [ 'number' ] = $args [ 'offset' ] = 0 ;
2013-04-29 09:39:28 -04:00
}
$terms = get_terms ( $taxonomy , $args );
2010-10-24 22:57:43 -04:00
2015-06-12 14:55:25 -04:00
if ( empty ( $terms ) || ! is_array ( $terms ) ) {
2013-04-29 09:39:28 -04:00
echo '<tr class="no-items"><td class="colspanchange" colspan="' . $this -> get_column_count () . '">' ;
$this -> no_items ();
echo '</td></tr>' ;
return ;
}
2014-05-13 01:37:14 -04:00
if ( is_taxonomy_hierarchical ( $taxonomy ) && ! isset ( $args [ 'orderby' ] ) ) {
if ( ! empty ( $args [ 'search' ] ) ) { // Ignore children on searches.
2010-10-24 22:57:43 -04:00
$children = array ();
2014-05-13 01:37:14 -04:00
} else {
2010-10-24 22:57:43 -04:00
$children = _get_term_hierarchy ( $taxonomy );
2014-05-13 01:37:14 -04:00
}
2010-10-24 22:57:43 -04:00
// Some funky recursion to get the job done( Paging & parents mainly ) is contained within, Skip it for non-hierarchical taxonomies for performance sake
2013-04-28 21:10:50 -04:00
$this -> _rows ( $taxonomy , $terms , $children , $offset , $number , $count );
2010-10-24 22:57:43 -04:00
} else {
2014-05-13 01:37:14 -04:00
foreach ( $terms as $term ) {
2013-04-29 09:39:28 -04:00
$this -> single_row ( $term );
2014-05-13 01:37:14 -04:00
}
2010-10-24 22:57:43 -04:00
}
}
2014-11-30 19:33:23 -05:00
/**
* @ param string $taxonomy
* @ param array $terms
* @ param array $children
2015-05-29 16:17:26 -04:00
* @ param int $start
* @ param int $per_page
* @ param int $count
* @ param int $parent
* @ param int $level
2014-11-30 19:33:23 -05:00
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
private function _rows ( $taxonomy , $terms , & $children , $start , $per_page , & $count , $parent = 0 , $level = 0 ) {
2010-10-24 22:57:43 -04:00
$end = $start + $per_page ;
foreach ( $terms as $key => $term ) {
if ( $count >= $end )
break ;
if ( $term -> parent != $parent && empty ( $_REQUEST [ 's' ] ) )
continue ;
// If the page starts in a subtree, print the parents.
if ( $count == $start && $term -> parent > 0 && empty ( $_REQUEST [ 's' ] ) ) {
$my_parents = $parent_ids = array ();
$p = $term -> parent ;
while ( $p ) {
$my_parent = get_term ( $p , $taxonomy );
$my_parents [] = $my_parent ;
$p = $my_parent -> parent ;
if ( in_array ( $p , $parent_ids ) ) // Prevent parent loops.
break ;
$parent_ids [] = $p ;
}
unset ( $parent_ids );
$num_parents = count ( $my_parents );
while ( $my_parent = array_pop ( $my_parents ) ) {
2013-04-28 21:10:50 -04:00
echo " \t " ;
2013-04-29 09:39:28 -04:00
$this -> single_row ( $my_parent , $level - $num_parents );
2010-10-24 22:57:43 -04:00
$num_parents -- ;
}
}
2013-04-28 21:10:50 -04:00
if ( $count >= $start ) {
echo " \t " ;
2013-04-29 09:39:28 -04:00
$this -> single_row ( $term , $level );
2013-04-28 21:10:50 -04:00
}
2010-10-24 22:57:43 -04:00
++ $count ;
unset ( $terms [ $key ] );
if ( isset ( $children [ $term -> term_id ] ) && empty ( $_REQUEST [ 's' ] ) )
2013-04-28 21:10:50 -04:00
$this -> _rows ( $taxonomy , $terms , $children , $start , $per_page , $count , $term -> term_id , $level + 1 );
2010-10-24 22:57:43 -04:00
}
}
2014-11-30 19:33:23 -05:00
/**
* @ global string $taxonomy
2016-08-31 20:40:29 -04:00
* @ param WP_Term $tag Term object .
2014-11-30 19:33:23 -05:00
* @ param int $level
*/
2014-07-13 18:09:16 -04:00
public function single_row ( $tag , $level = 0 ) {
2014-05-10 20:05:15 -04:00
global $taxonomy ;
$tag = sanitize_term ( $tag , $taxonomy );
2010-10-24 22:57:43 -04:00
$this -> level = $level ;
2015-01-14 17:14:22 -05:00
echo '<tr id="tag-' . $tag -> term_id . '">' ;
2013-04-28 21:10:50 -04:00
$this -> single_row_columns ( $tag );
2010-10-24 22:57:43 -04:00
echo '</tr>' ;
}
2014-11-30 19:33:23 -05:00
/**
2016-08-31 20:40:29 -04:00
* @ param WP_Term $tag Term object .
2014-11-30 19:33:23 -05:00
* @ return string
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function column_cb ( $tag ) {
2012-09-19 08:43:31 -04:00
$default_term = get_option ( 'default_' . $this -> screen -> taxonomy );
2010-10-24 22:57:43 -04:00
2012-09-19 08:43:31 -04:00
if ( current_user_can ( get_taxonomy ( $this -> screen -> taxonomy ) -> cap -> delete_terms ) && $tag -> term_id != $default_term )
2012-07-25 12:18:14 -04:00
return '<label class="screen-reader-text" for="cb-select-' . $tag -> term_id . '">' . sprintf ( __ ( 'Select %s' ), $tag -> name ) . '</label>'
. '<input type="checkbox" name="delete_tags[]" value="' . $tag -> term_id . '" id="cb-select-' . $tag -> term_id . '" />' ;
2012-07-24 14:01:22 -04:00
return ' ' ;
2010-10-24 22:57:43 -04:00
}
2014-11-30 19:33:23 -05:00
/**
2016-08-31 20:40:29 -04:00
* @ param WP_Term $tag Term object .
2014-11-30 19:33:23 -05:00
* @ return string
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function column_name ( $tag ) {
2012-09-19 08:43:31 -04:00
$taxonomy = $this -> screen -> taxonomy ;
2010-10-24 22:57:43 -04:00
$pad = str_repeat ( '— ' , max ( 0 , $this -> level ) );
2014-02-04 02:56:12 -05:00
/**
2016-05-22 14:01:30 -04:00
* Filters display of the term name in the terms list table .
2014-02-04 02:56:12 -05:00
*
* The default output may include padding due to the term ' s
* current level in the term hierarchy .
*
* @ since 2.5 . 0
*
* @ see WP_Terms_List_Table :: column_name ()
*
* @ param string $pad_tag_name The term name , padded if not top - level .
2016-08-31 20:40:29 -04:00
* @ param WP_Term $tag Term object .
2014-02-04 02:56:12 -05:00
*/
2010-10-24 22:57:43 -04:00
$name = apply_filters ( 'term_name' , $pad . ' ' . $tag -> name , $tag );
2014-02-04 02:56:12 -05:00
2010-10-24 22:57:43 -04:00
$qe_data = get_term ( $tag -> term_id , $taxonomy , OBJECT , 'edit' );
2016-08-23 10:33:30 -04:00
$uri = wp_doing_ajax () ? wp_get_referer () : $_SERVER [ 'REQUEST_URI' ];
2015-09-15 11:59:42 -04:00
$edit_link = add_query_arg (
'wp_http_referer' ,
urlencode ( wp_unslash ( $uri ) ),
get_edit_term_link ( $tag -> term_id , $taxonomy , $this -> screen -> post_type )
);
2016-01-11 18:30:26 -05:00
$out = sprintf (
'<strong><a class="row-title" href="%s" aria-label="%s">%s</a></strong><br />' ,
esc_url ( $edit_link ),
/* translators: %s: taxonomy term name */
esc_attr ( sprintf ( __ ( '“%s” (Edit)' ), $tag -> name ) ),
$name
);
2010-10-24 22:57:43 -04:00
$out .= '<div class="hidden" id="inline_' . $qe_data -> term_id . '">' ;
$out .= '<div class="name">' . $qe_data -> name . '</div>' ;
2014-02-04 02:56:12 -05:00
/** This filter is documented in wp-admin/edit-tag-form.php */
2015-09-19 01:49:24 -04:00
$out .= '<div class="slug">' . apply_filters ( 'editable_slug' , $qe_data -> slug , $qe_data ) . '</div>' ;
2011-05-23 19:33:30 -04:00
$out .= '<div class="parent">' . $qe_data -> parent . '</div></div>' ;
2010-10-24 22:57:43 -04:00
return $out ;
}
2015-05-28 22:41:25 -04:00
/**
2015-07-13 14:22:25 -04:00
* Gets the name of the default primary column .
2015-05-28 22:41:25 -04:00
*
* @ since 4.3 . 0
* @ access protected
*
2015-05-30 21:44:26 -04:00
* @ return string Name of the default primary column , in this case , 'name' .
2015-05-28 22:41:25 -04:00
*/
protected function get_default_primary_column_name () {
return 'name' ;
}
/**
2015-07-13 14:22:25 -04:00
* Generates and displays row action links .
2015-05-28 22:41:25 -04:00
*
* @ since 4.3 . 0
* @ access protected
*
2016-08-31 20:40:29 -04:00
* @ param WP_Term $tag Tag being acted upon .
* @ param string $column_name Current column name .
* @ param string $primary Primary column name .
2015-05-30 21:44:26 -04:00
* @ return string Row actions output for terms .
2015-05-28 22:41:25 -04:00
*/
protected function handle_row_actions ( $tag , $column_name , $primary ) {
2015-07-14 13:47:24 -04:00
if ( $primary !== $column_name ) {
return '' ;
}
2015-05-28 22:41:25 -04:00
$taxonomy = $this -> screen -> taxonomy ;
$tax = get_taxonomy ( $taxonomy );
$default_term = get_option ( 'default_' . $taxonomy );
2016-08-23 10:33:30 -04:00
$uri = wp_doing_ajax () ? wp_get_referer () : $_SERVER [ 'REQUEST_URI' ];
2015-09-15 11:59:42 -04:00
$edit_link = add_query_arg (
'wp_http_referer' ,
urlencode ( wp_unslash ( $uri ) ),
get_edit_term_link ( $tag -> term_id , $taxonomy , $this -> screen -> post_type )
);
2015-05-28 22:41:25 -04:00
2015-07-14 13:47:24 -04:00
$actions = array ();
if ( current_user_can ( $tax -> cap -> edit_terms ) ) {
2016-01-11 18:30:26 -05:00
$actions [ 'edit' ] = sprintf (
'<a href="%s" aria-label="%s">%s</a>' ,
esc_url ( $edit_link ),
/* translators: %s: taxonomy term name */
esc_attr ( sprintf ( __ ( 'Edit “%s”' ), $tag -> name ) ),
__ ( 'Edit' )
);
$actions [ 'inline hide-if-no-js' ] = sprintf (
'<a href="#" class="editinline aria-button-if-js" aria-label="%s">%s</a>' ,
/* translators: %s: taxonomy term name */
esc_attr ( sprintf ( __ ( 'Quick edit “%s” inline' ), $tag -> name ) ),
__ ( 'Quick Edit' )
);
}
if ( current_user_can ( $tax -> cap -> delete_terms ) && $tag -> term_id != $default_term ) {
$actions [ 'delete' ] = sprintf (
'<a href="%s" class="delete-tag aria-button-if-js" aria-label="%s">%s</a>' ,
wp_nonce_url ( " edit-tags.php?action=delete&taxonomy= $taxonomy &tag_ID= $tag->term_id " , 'delete-tag_' . $tag -> term_id ),
/* translators: %s: taxonomy term name */
esc_attr ( sprintf ( __ ( 'Delete “%s”' ), $tag -> name ) ),
__ ( 'Delete' )
);
}
if ( $tax -> public ) {
$actions [ 'view' ] = sprintf (
'<a href="%s" aria-label="%s">%s</a>' ,
get_term_link ( $tag ),
/* translators: %s: taxonomy term name */
esc_attr ( sprintf ( __ ( 'View “%s” archive' ), $tag -> name ) ),
__ ( 'View' )
);
2015-07-14 13:47:24 -04:00
}
2015-05-28 22:41:25 -04:00
2015-07-14 13:47:24 -04:00
/**
2016-05-22 14:01:30 -04:00
* Filters the action links displayed for each term in the Tags list table .
2015-07-14 13:47:24 -04:00
*
* @ since 2.8 . 0
* @ deprecated 3.0 . 0 Use { $taxonomy } _row_actions instead .
*
* @ param array $actions An array of action links to be displayed . Default
* 'Edit' , 'Quick Edit' , 'Delete' , and 'View' .
2016-08-31 20:40:29 -04:00
* @ param WP_Term $tag Term object .
2015-07-14 13:47:24 -04:00
*/
$actions = apply_filters ( 'tag_row_actions' , $actions , $tag );
2015-05-28 22:41:25 -04:00
2015-07-14 13:47:24 -04:00
/**
2016-05-22 14:01:30 -04:00
* Filters the action links displayed for each term in the terms list table .
2015-07-14 13:47:24 -04:00
*
* The dynamic portion of the hook name , `$taxonomy` , refers to the taxonomy slug .
*
* @ since 3.0 . 0
*
* @ param array $actions An array of action links to be displayed . Default
* 'Edit' , 'Quick Edit' , 'Delete' , and 'View' .
2016-08-31 20:40:29 -04:00
* @ param WP_Term $tag Term object .
2015-07-14 13:47:24 -04:00
*/
$actions = apply_filters ( " { $taxonomy } _row_actions " , $actions , $tag );
2015-05-28 22:41:25 -04:00
2015-07-14 13:47:24 -04:00
return $this -> row_actions ( $actions );
2015-05-28 22:41:25 -04:00
}
2014-11-30 19:33:23 -05:00
/**
2016-08-31 20:40:29 -04:00
* @ param WP_Term $tag Term object .
2014-11-30 19:33:23 -05:00
* @ return string
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function column_description ( $tag ) {
2010-10-24 22:57:43 -04:00
return $tag -> description ;
}
2014-11-30 19:33:23 -05:00
/**
2016-08-31 20:40:29 -04:00
* @ param WP_Term $tag Term object .
2014-11-30 19:33:23 -05:00
* @ return string
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function column_slug ( $tag ) {
2014-02-04 02:56:12 -05:00
/** This filter is documented in wp-admin/edit-tag-form.php */
2015-09-19 01:49:24 -04:00
return apply_filters ( 'editable_slug' , $tag -> slug , $tag );
2010-10-24 22:57:43 -04:00
}
2014-11-30 19:33:23 -05:00
/**
2016-08-31 20:40:29 -04:00
* @ param WP_Term $tag Term object .
2014-11-30 19:33:23 -05:00
* @ return string
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function column_posts ( $tag ) {
2010-10-24 22:57:43 -04:00
$count = number_format_i18n ( $tag -> count );
2012-09-19 08:43:31 -04:00
$tax = get_taxonomy ( $this -> screen -> taxonomy );
2010-11-24 20:39:34 -05:00
2012-09-19 08:43:31 -04:00
$ptype_object = get_post_type_object ( $this -> screen -> post_type );
2011-11-21 15:44:48 -05:00
if ( ! $ptype_object -> show_ui )
2010-11-24 20:39:34 -05:00
return $count ;
2010-11-24 18:29:13 -05:00
if ( $tax -> query_var ) {
2010-11-24 20:39:34 -05:00
$args = array ( $tax -> query_var => $tag -> slug );
} else {
$args = array ( 'taxonomy' => $tax -> name , 'term' => $tag -> slug );
2010-10-24 22:57:43 -04:00
}
2012-09-19 08:43:31 -04:00
if ( 'post' != $this -> screen -> post_type )
$args [ 'post_type' ] = $this -> screen -> post_type ;
2010-11-24 20:39:34 -05:00
2015-09-22 02:06:25 -04:00
if ( 'attachment' === $this -> screen -> post_type )
2012-09-21 18:52:54 -04:00
return " <a href=' " . esc_url ( add_query_arg ( $args , 'upload.php' ) ) . " '> $count </a> " ;
2011-05-23 19:33:30 -04:00
return " <a href=' " . esc_url ( add_query_arg ( $args , 'edit.php' ) ) . " '> $count </a> " ;
2010-10-24 22:57:43 -04:00
}
2014-11-30 19:33:23 -05:00
/**
2016-08-31 20:40:29 -04:00
* @ param WP_Term $tag Term object .
2014-11-30 19:33:23 -05:00
* @ return string
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function column_links ( $tag ) {
2010-10-24 22:57:43 -04:00
$count = number_format_i18n ( $tag -> count );
2010-12-27 11:57:19 -05:00
if ( $count )
$count = " <a href='link-manager.php?cat_id= $tag->term_id '> $count </a> " ;
2010-10-24 22:57:43 -04:00
return $count ;
}
2014-11-30 19:33:23 -05:00
/**
2016-08-31 20:40:29 -04:00
* @ param WP_Term $tag Term object .
2014-11-30 19:33:23 -05:00
* @ param string $column_name
* @ return string
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function column_default ( $tag , $column_name ) {
2014-02-04 02:56:12 -05:00
/**
2016-05-22 14:01:30 -04:00
* Filters the displayed columns in the terms list table .
2014-02-04 02:56:12 -05:00
*
2014-11-30 06:28:24 -05:00
* The dynamic portion of the hook name , `$this->screen->taxonomy` ,
2014-02-04 02:56:12 -05:00
* refers to the slug of the current taxonomy .
*
* @ since 2.8 . 0
*
* @ param string $string Blank string .
* @ param string $column_name Name of the column .
* @ param int $term_id Term ID .
*/
2012-09-19 08:43:31 -04:00
return apply_filters ( " manage_ { $this -> screen -> taxonomy } _custom_column " , '' , $column_name , $tag -> term_id );
2010-10-24 22:57:43 -04:00
}
/**
* Outputs the hidden row displayed when inline editing
*
* @ since 3.1 . 0
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function inline_edit () {
2012-09-19 08:43:31 -04:00
$tax = get_taxonomy ( $this -> screen -> taxonomy );
2010-10-24 22:57:43 -04:00
if ( ! current_user_can ( $tax -> cap -> edit_terms ) )
return ;
2010-11-14 13:00:09 -05:00
?>
2010-10-24 22:57:43 -04:00
2015-01-15 23:16:24 -05:00
< form method = " get " >< table style = " display: none " >< tbody id = " inlineedit " >
2010-11-14 13:00:09 -05:00
< tr id = " inline-edit " class = " inline-edit-row " style = " display: none " >< td colspan = " <?php echo $this->get_column_count (); ?> " class = " colspanchange " >
2010-10-24 22:57:43 -04:00
2015-10-16 20:45:25 -04:00
< fieldset >
< legend class = " inline-edit-legend " >< ? php _e ( 'Quick Edit' ); ?> </legend>
< div class = " inline-edit-col " >
2010-10-24 22:57:43 -04:00
< label >
2011-06-10 18:13:26 -04:00
< span class = " title " >< ? php _ex ( 'Name' , 'term name' ); ?> </span>
2010-10-24 22:57:43 -04:00
< span class = " input-text-wrap " >< input type = " text " name = " name " class = " ptitle " value = " " /></ span >
</ label >
< ? php if ( ! global_terms_enabled () ) { ?>
< label >
< span class = " title " >< ? php _e ( 'Slug' ); ?> </span>
< span class = " input-text-wrap " >< input type = " text " name = " slug " class = " ptitle " value = " " /></ span >
</ label >
< ? php } ?>
</ div ></ fieldset >
< ? php
$core_columns = array ( 'cb' => true , 'description' => true , 'name' => true , 'slug' => true , 'posts' => true );
2010-11-14 13:00:09 -05:00
list ( $columns ) = $this -> get_column_info ();
2010-10-24 22:57:43 -04:00
foreach ( $columns as $column_name => $column_display_name ) {
if ( isset ( $core_columns [ $column_name ] ) )
continue ;
2010-12-17 08:20:17 -05:00
2014-02-04 02:56:12 -05:00
/** This action is documented in wp-admin/includes/class-wp-posts-list-table.php */
2012-09-19 08:43:31 -04:00
do_action ( 'quick_edit_custom_box' , $column_name , 'edit-tags' , $this -> screen -> taxonomy );
2010-10-24 22:57:43 -04:00
}
?>
< p class = " inline-edit-save submit " >
2015-11-10 19:24:28 -05:00
< button type = " button " class = " cancel button-secondary alignleft " >< ? php _e ( 'Cancel' ); ?> </button>
< button type = " button " class = " save button-primary alignright " >< ? php echo $tax -> labels -> update_item ; ?> </button>
2012-09-26 15:57:44 -04:00
< span class = " spinner " ></ span >
2010-10-24 22:57:43 -04:00
< span class = " error " style = " display:none; " ></ span >
< ? php wp_nonce_field ( 'taxinlineeditnonce' , '_inline_edit' , false ); ?>
2012-09-19 08:43:31 -04:00
< input type = " hidden " name = " taxonomy " value = " <?php echo esc_attr( $this->screen ->taxonomy ); ?> " />
< input type = " hidden " name = " post_type " value = " <?php echo esc_attr( $this->screen ->post_type ); ?> " />
2010-10-24 22:57:43 -04:00
< br class = " clear " />
</ p >
</ td ></ tr >
</ tbody ></ table ></ form >
< ? php
}
}