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
|
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
|
|
|
|
*
|
|
|
|
* @see WP_List_Table::__construct() for more information on default arguments.
|
|
|
|
*
|
Docs: Add missing description for a few globals in the admin.
This affects:
* `$post_type`
* `$post_type_object`
* `$taxonomy`
* `$title`
* `$wp_meta_boxes`
Follow-up to [31121], [32642], [32643], [37890], [43815], [44244], [45742], [53060], [53061], [54831].
Props shub07, 1naveengiri, sabernhardt, SergeyBiryukov.
Fixes #59561.
Built from https://develop.svn.wordpress.org/trunk@58419
git-svn-id: http://core.svn.wordpress.org/trunk@57868 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-06-15 08:34:13 -04:00
|
|
|
* @global string $post_type Global post type.
|
|
|
|
* @global string $taxonomy Global taxonomy.
|
2015-05-28 17:41:30 -04:00
|
|
|
* @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
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
parent::__construct(
|
|
|
|
array(
|
|
|
|
'plural' => 'tags',
|
|
|
|
'singular' => 'tag',
|
|
|
|
'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
|
|
|
|
)
|
|
|
|
);
|
2012-09-19 08:43:31 -04:00
|
|
|
|
|
|
|
$action = $this->screen->action;
|
|
|
|
$post_type = $this->screen->post_type;
|
|
|
|
$taxonomy = $this->screen->taxonomy;
|
2010-10-24 22:57:43 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( empty( $taxonomy ) ) {
|
2010-10-24 22:57:43 -04:00
|
|
|
$taxonomy = 'post_tag';
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2010-10-24 22:57:43 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( ! taxonomy_exists( $taxonomy ) ) {
|
2016-07-17 12:15:34 -04:00
|
|
|
wp_die( __( 'Invalid taxonomy.' ) );
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
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.
|
2020-04-04 23:02:11 -04:00
|
|
|
if ( empty( $post_type ) || ! in_array( $post_type, get_post_types( array( 'show_ui' => true ) ), true ) ) {
|
2010-10-24 22:57:43 -04:00
|
|
|
$post_type = 'post';
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2010-10-24 22:57:43 -04: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 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
|
|
|
/**
|
|
|
|
*/
|
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() {
|
2021-10-07 20:38:00 -04:00
|
|
|
$taxonomy = $this->screen->taxonomy;
|
|
|
|
|
|
|
|
$tags_per_page = $this->get_items_per_page( "edit_{$taxonomy}_per_page" );
|
2010-10-24 22:57:43 -04:00
|
|
|
|
2021-10-07 20:38:00 -04:00
|
|
|
if ( 'post_tag' === $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
|
2019-11-09 08:05:02 -05:00
|
|
|
* @deprecated 2.8.0 Use {@see 'edit_tags_per_page'} instead.
|
2014-02-04 02:56:12 -05:00
|
|
|
*
|
|
|
|
* @param int $tags_per_page Number of tags to be displayed. Default 20.
|
|
|
|
*/
|
2019-11-09 07:59:03 -05:00
|
|
|
$tags_per_page = apply_filters_deprecated( 'tagsperpage', array( $tags_per_page ), '2.8.0', 'edit_tags_per_page' );
|
2021-10-07 20:38:00 -04:00
|
|
|
} elseif ( 'category' === $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
|
|
|
}
|
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
$search = ! empty( $_REQUEST['s'] ) ? trim( wp_unslash( $_REQUEST['s'] ) ) : '';
|
2010-10-24 22:57:43 -04:00
|
|
|
|
|
|
|
$args = array(
|
2021-10-07 20:38:00 -04:00
|
|
|
'taxonomy' => $taxonomy,
|
|
|
|
'search' => $search,
|
|
|
|
'page' => $this->get_pagenum(),
|
|
|
|
'number' => $tags_per_page,
|
|
|
|
'hide_empty' => 0,
|
2010-10-24 22:57:43 -04:00
|
|
|
);
|
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( ! empty( $_REQUEST['orderby'] ) ) {
|
2013-03-01 12:00:25 -05:00
|
|
|
$args['orderby'] = trim( wp_unslash( $_REQUEST['orderby'] ) );
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2010-10-24 22:57:43 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( ! empty( $_REQUEST['order'] ) ) {
|
2013-03-01 12:00:25 -05:00
|
|
|
$args['order'] = trim( wp_unslash( $_REQUEST['order'] ) );
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2010-10-24 22:57:43 -04:00
|
|
|
|
2021-10-07 20:38:00 -04:00
|
|
|
$args['offset'] = ( $args['page'] - 1 ) * $args['number'];
|
|
|
|
|
|
|
|
// Save the values because 'number' and 'offset' can be subsequently overridden.
|
2010-10-24 22:57:43 -04:00
|
|
|
$this->callback_args = $args;
|
|
|
|
|
2021-10-07 20:38:00 -04:00
|
|
|
if ( is_taxonomy_hierarchical( $taxonomy ) && ! isset( $args['orderby'] ) ) {
|
|
|
|
// We'll need the full set of terms then.
|
|
|
|
$args['number'] = 0;
|
|
|
|
$args['offset'] = $args['number'];
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->items = get_terms( $args );
|
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
$this->set_pagination_args(
|
|
|
|
array(
|
2020-08-21 18:32:06 -04:00
|
|
|
'total_items' => wp_count_terms(
|
|
|
|
array(
|
2021-10-07 20:38:00 -04:00
|
|
|
'taxonomy' => $taxonomy,
|
2020-08-21 18:32:06 -04:00
|
|
|
'search' => $search,
|
|
|
|
)
|
|
|
|
),
|
2017-11-30 18:11:00 -05:00
|
|
|
'per_page' => $tags_per_page,
|
|
|
|
)
|
|
|
|
);
|
2010-10-24 22:57:43 -04:00
|
|
|
}
|
2011-01-05 23:11:14 -05:00
|
|
|
|
2015-05-29 17:32:24 -04:00
|
|
|
/**
|
|
|
|
*/
|
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();
|
Taxonomy: Introduce more fine grained capabilities for managing taxonomy terms.
This introduces the singular `edit_term`, `delete_term`, and `assign_term` meta capabilities for terms, and switches the base capability name for tags from `manage_categories` to `manage_post_tags` and the corresponding `edit_post_tags`, `delete_post_tags`, and `assign_post_tags`.
All of these capabilities ultimately map to `manage_categories` so by default there is no change in the behaviour of the capabilities for categories, tags, or custom taxonomies. The `map_meta_cap` filter and the `capabilities` argument when registering a taxonomy now allow for control over editing, deleting, and assigning individual terms, as well as a separation of capabilities for tags from those of categories.
Fixes #35614
Props johnjamesjacoby for feedback
Built from https://develop.svn.wordpress.org/trunk@38698
git-svn-id: http://core.svn.wordpress.org/trunk@38641 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-09-30 18:40:28 -04:00
|
|
|
|
|
|
|
if ( current_user_can( get_taxonomy( $this->screen->taxonomy )->cap->delete_terms ) ) {
|
|
|
|
$actions['delete'] = __( 'Delete' );
|
|
|
|
}
|
2010-10-24 22:57:43 -04:00
|
|
|
|
|
|
|
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() {
|
2021-01-07 11:23:07 -05:00
|
|
|
if ( isset( $_REQUEST['action'] ) && isset( $_REQUEST['delete_tags'] ) && 'delete' === $_REQUEST['action'] ) {
|
2010-10-24 22:57:43 -04:00
|
|
|
return 'bulk-delete';
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2010-10-24 22:57:43 -04:00
|
|
|
|
|
|
|
return parent::current_action();
|
|
|
|
}
|
|
|
|
|
2015-05-29 16:17:26 -04:00
|
|
|
/**
|
2023-05-08 18:37:24 -04:00
|
|
|
* @return string[] Array of column titles keyed by their column name.
|
2015-05-29 16:17:26 -04:00
|
|
|
*/
|
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() {
|
2023-06-21 17:47:23 -04:00
|
|
|
$taxonomy = $this->screen->taxonomy;
|
|
|
|
|
|
|
|
if ( ! isset( $_GET['orderby'] ) && is_taxonomy_hierarchical( $taxonomy ) ) {
|
|
|
|
$name_orderby_text = __( 'Table ordered hierarchically.' );
|
|
|
|
} else {
|
|
|
|
$name_orderby_text = __( 'Table ordered by Name.' );
|
|
|
|
}
|
|
|
|
|
2010-10-24 22:57:43 -04:00
|
|
|
return array(
|
2023-06-21 17:47:23 -04:00
|
|
|
'name' => array( 'name', false, _x( 'Name', 'term name' ), $name_orderby_text, 'asc' ),
|
|
|
|
'description' => array( 'description', false, __( 'Description' ), __( 'Table ordered by Description.' ) ),
|
|
|
|
'slug' => array( 'slug', false, __( 'Slug' ), __( 'Table ordered by Slug.' ) ),
|
|
|
|
'posts' => array( 'count', false, _x( 'Count', 'Number/count of items' ), __( 'Table ordered by Posts Count.' ) ),
|
|
|
|
'links' => array( 'count', false, __( 'Links' ), __( 'Table ordered by Links.' ) ),
|
2010-10-24 22:57:43 -04:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2015-05-29 17:32:24 -04:00
|
|
|
/**
|
|
|
|
*/
|
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
|
|
|
|
2021-10-07 20:38:00 -04:00
|
|
|
$number = $this->callback_args['number'];
|
|
|
|
$offset = $this->callback_args['offset'];
|
2010-10-24 22:57:43 -04:00
|
|
|
|
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
|
|
|
|
2021-10-07 20:38:00 -04:00
|
|
|
if ( empty( $this->items ) || ! is_array( $this->items ) ) {
|
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;
|
|
|
|
}
|
|
|
|
|
2021-10-07 20:38:00 -04:00
|
|
|
if ( is_taxonomy_hierarchical( $taxonomy ) && ! isset( $this->callback_args['orderby'] ) ) {
|
|
|
|
if ( ! empty( $this->callback_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
|
|
|
}
|
2020-01-28 19:45:18 -05:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Some funky recursion to get the job done (paging & parents mainly) is contained within.
|
|
|
|
* Skip it for non-hierarchical taxonomies for performance sake.
|
|
|
|
*/
|
2021-10-07 20:38:00 -04:00
|
|
|
$this->_rows( $taxonomy, $this->items, $children, $offset, $number, $count );
|
2010-10-24 22:57:43 -04:00
|
|
|
} else {
|
2021-10-07 20:38:00 -04:00
|
|
|
foreach ( $this->items 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
|
2020-07-23 16:01:04 -04:00
|
|
|
* @param array $terms
|
|
|
|
* @param array $children
|
|
|
|
* @param int $start
|
|
|
|
* @param int $per_page
|
|
|
|
* @param int $count
|
Code Modernization: Rename parameters that use reserved keywords in `wp-admin/includes/class-wp-terms-list-table.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$parent` parameter to `$parent_term` in `WP_Terms_List_Table::_rows()`.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53174
git-svn-id: http://core.svn.wordpress.org/trunk@52763 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-13 12:14:10 -04:00
|
|
|
* @param int $parent_term
|
2020-07-23 16:01:04 -04:00
|
|
|
* @param int $level
|
2014-11-30 19:33:23 -05:00
|
|
|
*/
|
Code Modernization: Rename parameters that use reserved keywords in `wp-admin/includes/class-wp-terms-list-table.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$parent` parameter to `$parent_term` in `WP_Terms_List_Table::_rows()`.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53174
git-svn-id: http://core.svn.wordpress.org/trunk@52763 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-13 12:14:10 -04:00
|
|
|
private function _rows( $taxonomy, $terms, &$children, $start, $per_page, &$count, $parent_term = 0, $level = 0 ) {
|
2010-10-24 22:57:43 -04:00
|
|
|
|
|
|
|
$end = $start + $per_page;
|
|
|
|
|
|
|
|
foreach ( $terms as $key => $term ) {
|
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( $count >= $end ) {
|
2010-10-24 22:57:43 -04:00
|
|
|
break;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2010-10-24 22:57:43 -04:00
|
|
|
|
Code Modernization: Rename parameters that use reserved keywords in `wp-admin/includes/class-wp-terms-list-table.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$parent` parameter to `$parent_term` in `WP_Terms_List_Table::_rows()`.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53174
git-svn-id: http://core.svn.wordpress.org/trunk@52763 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-13 12:14:10 -04:00
|
|
|
if ( $term->parent !== $parent_term && empty( $_REQUEST['s'] ) ) {
|
2010-10-24 22:57:43 -04:00
|
|
|
continue;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2010-10-24 22:57:43 -04:00
|
|
|
|
|
|
|
// If the page starts in a subtree, print the parents.
|
2021-04-21 14:53:00 -04:00
|
|
|
if ( $count === $start && $term->parent > 0 && empty( $_REQUEST['s'] ) ) {
|
2019-07-01 08:52:01 -04:00
|
|
|
$my_parents = array();
|
|
|
|
$parent_ids = array();
|
2017-11-30 18:11:00 -05:00
|
|
|
$p = $term->parent;
|
2021-04-21 14:53:00 -04:00
|
|
|
|
2010-10-24 22:57:43 -04:00
|
|
|
while ( $p ) {
|
2017-11-30 18:11:00 -05:00
|
|
|
$my_parent = get_term( $p, $taxonomy );
|
2010-10-24 22:57:43 -04:00
|
|
|
$my_parents[] = $my_parent;
|
2017-11-30 18:11:00 -05:00
|
|
|
$p = $my_parent->parent;
|
2021-04-21 14:53:00 -04:00
|
|
|
|
2020-04-09 11:43:10 -04:00
|
|
|
if ( in_array( $p, $parent_ids, true ) ) { // Prevent parent loops.
|
2010-10-24 22:57:43 -04:00
|
|
|
break;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2021-04-21 14:53:00 -04:00
|
|
|
|
2010-10-24 22:57:43 -04:00
|
|
|
$parent_ids[] = $p;
|
|
|
|
}
|
2021-04-21 14:53:00 -04:00
|
|
|
|
2010-10-24 22:57:43 -04:00
|
|
|
unset( $parent_ids );
|
|
|
|
|
|
|
|
$num_parents = count( $my_parents );
|
2021-04-21 14:53:00 -04:00
|
|
|
|
2010-10-24 22:57:43 -04:00
|
|
|
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 );
|
2023-09-09 05:28:26 -04:00
|
|
|
--$num_parents;
|
2010-10-24 22:57:43 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
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;
|
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
unset( $terms[ $key ] );
|
2010-10-24 22:57:43 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
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 );
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2010-10-24 22:57:43 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-11-30 19:33:23 -05:00
|
|
|
/**
|
Docs: Add missing description for a few globals in the admin.
This affects:
* `$post_type`
* `$post_type_object`
* `$taxonomy`
* `$title`
* `$wp_meta_boxes`
Follow-up to [31121], [32642], [32643], [37890], [43815], [44244], [45742], [53060], [53061], [54831].
Props shub07, 1naveengiri, sabernhardt, SergeyBiryukov.
Fixes #59561.
Built from https://develop.svn.wordpress.org/trunk@58419
git-svn-id: http://core.svn.wordpress.org/trunk@57868 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-06-15 08:34:13 -04:00
|
|
|
* @global string $taxonomy Global taxonomy.
|
|
|
|
*
|
2020-07-23 16:01:04 -04:00
|
|
|
* @param WP_Term $tag Term object.
|
|
|
|
* @param int $level
|
2014-11-30 19:33:23 -05:00
|
|
|
*/
|
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;
|
2017-11-30 18:11:00 -05:00
|
|
|
$tag = sanitize_term( $tag, $taxonomy );
|
2014-05-10 20:05:15 -04:00
|
|
|
|
2010-10-24 22:57:43 -04:00
|
|
|
$this->level = $level;
|
|
|
|
|
2019-03-06 22:04:50 -05:00
|
|
|
if ( $tag->parent ) {
|
|
|
|
$count = count( get_ancestors( $tag->term_id, $taxonomy, 'taxonomy' ) );
|
|
|
|
$level = 'level-' . $count;
|
|
|
|
} else {
|
|
|
|
$level = 'level-0';
|
|
|
|
}
|
|
|
|
|
|
|
|
echo '<tr id="tag-' . $tag->term_id . '" class="' . $level . '">';
|
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
|
|
|
/**
|
Code Modernization: Fix parameter name mismatches for parent/child classes in `WP_List_Table::column_cb()`.
Matches the method signatures of the parent class and each child class.
Why? PHP 8 introduces the ability to pass named arguments to function/method calls. This means the child and parent method signatures (i.e. parameter names) need to match.
For readability:
- `@since` clearly specifies the original parameter name and its new name as well as why the change happened
- in methods longer than a single line, the generic parameter is reassigned to the original parameter restoring it for context for use within the method. An inline comment is added to explain why this reassignment is made.
Follow-up to [15632], [30679], [31210], [32740], [32753], [32754], [32755], [32756], [32757].
Props jrf, hellofromTonya, sergeybiryukov, azaozz, desrosj, johnbillion.
See #51553.
Built from https://develop.svn.wordpress.org/trunk@51735
git-svn-id: http://core.svn.wordpress.org/trunk@51343 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-09-07 14:19:56 -04:00
|
|
|
* @since 5.9.0 Renamed `$tag` to `$item` to match parent class for PHP 8 named parameter support.
|
|
|
|
*
|
|
|
|
* @param WP_Term $item Term object.
|
2014-11-30 19:33:23 -05:00
|
|
|
* @return string
|
|
|
|
*/
|
Code Modernization: Fix parameter name mismatches for parent/child classes in `WP_List_Table::column_cb()`.
Matches the method signatures of the parent class and each child class.
Why? PHP 8 introduces the ability to pass named arguments to function/method calls. This means the child and parent method signatures (i.e. parameter names) need to match.
For readability:
- `@since` clearly specifies the original parameter name and its new name as well as why the change happened
- in methods longer than a single line, the generic parameter is reassigned to the original parameter restoring it for context for use within the method. An inline comment is added to explain why this reassignment is made.
Follow-up to [15632], [30679], [31210], [32740], [32753], [32754], [32755], [32756], [32757].
Props jrf, hellofromTonya, sergeybiryukov, azaozz, desrosj, johnbillion.
See #51553.
Built from https://develop.svn.wordpress.org/trunk@51735
git-svn-id: http://core.svn.wordpress.org/trunk@51343 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-09-07 14:19:56 -04:00
|
|
|
public function column_cb( $item ) {
|
|
|
|
// Restores the more descriptive, specific name for use within this method.
|
|
|
|
$tag = $item;
|
|
|
|
|
Taxonomy: Introduce more fine grained capabilities for managing taxonomy terms.
This introduces the singular `edit_term`, `delete_term`, and `assign_term` meta capabilities for terms, and switches the base capability name for tags from `manage_categories` to `manage_post_tags` and the corresponding `edit_post_tags`, `delete_post_tags`, and `assign_post_tags`.
All of these capabilities ultimately map to `manage_categories` so by default there is no change in the behaviour of the capabilities for categories, tags, or custom taxonomies. The `map_meta_cap` filter and the `capabilities` argument when registering a taxonomy now allow for control over editing, deleting, and assigning individual terms, as well as a separation of capabilities for tags from those of categories.
Fixes #35614
Props johnjamesjacoby for feedback
Built from https://develop.svn.wordpress.org/trunk@38698
git-svn-id: http://core.svn.wordpress.org/trunk@38641 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-09-30 18:40:28 -04:00
|
|
|
if ( current_user_can( 'delete_term', $tag->term_id ) ) {
|
I18N: Improve translator comments.
* Add missing translator comments.
* Fix placement of some translator comments. Translator comments should be on the line directly above the line containing the translation function call for optimal compatibility with various `.pot` file generation tools. The CS auto-fixing, which changed some inconsistent function calls to multi-line function calls, is part of the reason why this was no longer the case for a select group of translator comments.
Includes minor code layout fixes.
Polyglots, rejoice! All WordPress core files now have translator comments for all strings with placeholders!
Props jrf, subrataemfluence, GaryJ, webdados, Dency, swissspidy, alvarogois, marcomartins, mihaiiceyro, vladwtz, niq1982, flipkeijzer, michielatyoast, chandrapatel, thrijith, joshuanoyce, FesoVik, tessak22, bhaktirajdev, cleancoded, dhavalkasvala, garrett-eclipse, bibliofille, socalchristina, priyankkpatel, 5hel2l2y, adamsilverstein, JeffPaul, pierlo, SergeyBiryukov.
Fixes #44360.
Built from https://develop.svn.wordpress.org/trunk@45926
git-svn-id: http://core.svn.wordpress.org/trunk@45737 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-01 13:13:59 -04:00
|
|
|
return sprintf(
|
2023-09-22 15:58:16 -04:00
|
|
|
'<input type="checkbox" name="delete_tags[]" value="%1$s" id="cb-select-%1$s" />' .
|
|
|
|
'<label for="cb-select-%1$s"><span class="screen-reader-text">%2$s</span></label>',
|
I18N: Improve translator comments.
* Add missing translator comments.
* Fix placement of some translator comments. Translator comments should be on the line directly above the line containing the translation function call for optimal compatibility with various `.pot` file generation tools. The CS auto-fixing, which changed some inconsistent function calls to multi-line function calls, is part of the reason why this was no longer the case for a select group of translator comments.
Includes minor code layout fixes.
Polyglots, rejoice! All WordPress core files now have translator comments for all strings with placeholders!
Props jrf, subrataemfluence, GaryJ, webdados, Dency, swissspidy, alvarogois, marcomartins, mihaiiceyro, vladwtz, niq1982, flipkeijzer, michielatyoast, chandrapatel, thrijith, joshuanoyce, FesoVik, tessak22, bhaktirajdev, cleancoded, dhavalkasvala, garrett-eclipse, bibliofille, socalchristina, priyankkpatel, 5hel2l2y, adamsilverstein, JeffPaul, pierlo, SergeyBiryukov.
Fixes #44360.
Built from https://develop.svn.wordpress.org/trunk@45926
git-svn-id: http://core.svn.wordpress.org/trunk@45737 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-01 13:13:59 -04:00
|
|
|
$tag->term_id,
|
I18N: Mark screen reader strings as such with translator comments.
This aims to provide better context for translators and make it easier to determine that some strings contain hidden accessibility text and are not displayed in the UI.
Props kebbet, mercime, pavelevap, ocean90, swissspidy, Chouby, jipmoors, afercia, desrosj, costdev, audrasjb, SergeyBiryukov.
Fixes #29748.
Built from https://develop.svn.wordpress.org/trunk@55276
git-svn-id: http://core.svn.wordpress.org/trunk@54809 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-02-07 12:10:21 -05:00
|
|
|
/* translators: Hidden accessibility text. %s: Taxonomy term name. */
|
I18N: Improve translator comments.
* Add missing translator comments.
* Fix placement of some translator comments. Translator comments should be on the line directly above the line containing the translation function call for optimal compatibility with various `.pot` file generation tools. The CS auto-fixing, which changed some inconsistent function calls to multi-line function calls, is part of the reason why this was no longer the case for a select group of translator comments.
Includes minor code layout fixes.
Polyglots, rejoice! All WordPress core files now have translator comments for all strings with placeholders!
Props jrf, subrataemfluence, GaryJ, webdados, Dency, swissspidy, alvarogois, marcomartins, mihaiiceyro, vladwtz, niq1982, flipkeijzer, michielatyoast, chandrapatel, thrijith, joshuanoyce, FesoVik, tessak22, bhaktirajdev, cleancoded, dhavalkasvala, garrett-eclipse, bibliofille, socalchristina, priyankkpatel, 5hel2l2y, adamsilverstein, JeffPaul, pierlo, SergeyBiryukov.
Fixes #44360.
Built from https://develop.svn.wordpress.org/trunk@45926
git-svn-id: http://core.svn.wordpress.org/trunk@45737 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-01 13:13:59 -04:00
|
|
|
sprintf( __( 'Select %s' ), $tag->name )
|
|
|
|
);
|
Taxonomy: Introduce more fine grained capabilities for managing taxonomy terms.
This introduces the singular `edit_term`, `delete_term`, and `assign_term` meta capabilities for terms, and switches the base capability name for tags from `manage_categories` to `manage_post_tags` and the corresponding `edit_post_tags`, `delete_post_tags`, and `assign_post_tags`.
All of these capabilities ultimately map to `manage_categories` so by default there is no change in the behaviour of the capabilities for categories, tags, or custom taxonomies. The `map_meta_cap` filter and the `capabilities` argument when registering a taxonomy now allow for control over editing, deleting, and assigning individual terms, as well as a separation of capabilities for tags from those of categories.
Fixes #35614
Props johnjamesjacoby for feedback
Built from https://develop.svn.wordpress.org/trunk@38698
git-svn-id: http://core.svn.wordpress.org/trunk@38641 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-09-30 18:40:28 -04:00
|
|
|
}
|
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
|
|
|
|
Taxonomy: Allow `get_*_*_link()` and `edit_term_link()` functions to accept a term ID, `WP_Term`, or term object.
`get_term()` accepts a term ID, instance of `WP_Term`, or an object (i.e. `stdClass` as a result of a db query). Functions that use `get_term()` also now allow for the same data types.
Why? For consistency, removing extra processing code in consuming functions, and performance.
Functions changed in this commit are:
* `get_category_feed_link()`
* `get_term_feed_link()`
* `get_tag_feed_link()`
* `get_edit_tag_link()`
* `get_edit_term_link()`
* `edit_term_link()`
For each of consumer of these functions, changes to pass the object instead of the term ID.
Includes unit/integration tests for test coverage of these changes.
Follow-up to [6365], [9136], [9340], [14711], [15792], [15800], [18827], [32606], [36646], [37252].
Props davidbinda, johnbillion, peterwilsoncc, hellofromTonya, sergeybiryukov, mista-flo, hareesh-pillai, audrasjb, jeffpaul, chaion07.
Fixes #50225.
Built from https://develop.svn.wordpress.org/trunk@52180
git-svn-id: http://core.svn.wordpress.org/trunk@51772 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-16 09:57:02 -05:00
|
|
|
$edit_link = get_edit_term_link( $tag, $taxonomy, $this->screen->post_type );
|
2018-01-23 06:34:31 -05:00
|
|
|
|
|
|
|
if ( $edit_link ) {
|
|
|
|
$edit_link = add_query_arg(
|
|
|
|
'wp_http_referer',
|
|
|
|
urlencode( wp_unslash( $uri ) ),
|
|
|
|
$edit_link
|
|
|
|
);
|
2018-08-16 21:51:36 -04:00
|
|
|
$name = sprintf(
|
2018-01-23 06:34:31 -05:00
|
|
|
'<a class="row-title" href="%s" aria-label="%s">%s</a>',
|
|
|
|
esc_url( $edit_link ),
|
2019-09-02 20:41:05 -04:00
|
|
|
/* translators: %s: Taxonomy term name. */
|
2018-01-23 06:34:31 -05:00
|
|
|
esc_attr( sprintf( __( '“%s” (Edit)' ), $tag->name ) ),
|
|
|
|
$name
|
|
|
|
);
|
|
|
|
}
|
2015-09-15 11:59:42 -04:00
|
|
|
|
Coding Standards: Use more meaningful variable names for output in the admin.
This renames some variables for clarity, per the [https://developer.wordpress.org/coding-standards/wordpress-coding-standards/php/#naming-conventions Naming Conventions]:
> Don’t abbreviate variable names unnecessarily; let the code be unambiguous and self-documenting.
* `$out` is renamed to `$output` in various list table methods and admin functions.
* `$sep` is renamed to `$separator` in various list table methods and admin functions.
This affects:
* `WP_Comments_List_Table::handle_row_actions()`
* `WP_List_Table::row_actions()`
* `WP_Media_List_Table::column_default()`
* `WP_MS_Sites_List_Table::site_states()`
* `WP_MS_Users_List_Table::column_blogs()`
* `WP_Terms_List_Table::column_name()`
* `_wp_dashboard_recent_comments_row()`
* `image_align_input_fields()`
* `image_size_input_fields()`
* `wp_doc_link_parse()`
* `_post_states()`
* `_media_states()`
Follow-up to [8653], [8692], [8864], [8910], [8911], [8916], [9103], [9153], [10607], [15491], [17793], [32644], [54070].
Props mukesh27, costdev.
See #56448, #55647.
Built from https://develop.svn.wordpress.org/trunk@54071
git-svn-id: http://core.svn.wordpress.org/trunk@53630 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-05 13:19:09 -04:00
|
|
|
$output = sprintf(
|
2018-01-23 06:34:31 -05:00
|
|
|
'<strong>%s</strong><br />',
|
2016-01-11 18:30:26 -05:00
|
|
|
$name
|
|
|
|
);
|
2010-10-24 22:57:43 -04:00
|
|
|
|
Quick Edit: Allow Quick Edit to be disabled for custom post types or taxonomies.
Some custom post types or taxonomies may not need the Quick Edit functionality, in which case adding hidden fields and rendering the form with the data to edit would be redundant.
This commit introduces two filters for more granular control:
* `quick_edit_enabled_for_post_type`
* `quick_edit_enabled_for_taxonomy`
Follow-up to [8857], [9083], [9098].
Props garyc40, sabernhardt, mukesh27, costdev, oglekler, wyrfel, peterwilsoncc, faguni22, robinwpdeveloper, webcommsat, johnbillion, azaozz, hellofromTonya, GunGeekATX, Jick, mikeschinkel, jane, nacin, helen, wonderboymusic, DrewAPicture, SergeyBiryukov.
Fixes #16502, #19343, #57596.
Built from https://develop.svn.wordpress.org/trunk@56611
git-svn-id: http://core.svn.wordpress.org/trunk@56123 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-09-18 09:19:19 -04:00
|
|
|
/** This filter is documented in wp-admin/includes/class-wp-terms-list-table.php */
|
|
|
|
$quick_edit_enabled = apply_filters( 'quick_edit_enabled_for_taxonomy', true, $taxonomy );
|
2014-02-04 02:56:12 -05:00
|
|
|
|
Quick Edit: Allow Quick Edit to be disabled for custom post types or taxonomies.
Some custom post types or taxonomies may not need the Quick Edit functionality, in which case adding hidden fields and rendering the form with the data to edit would be redundant.
This commit introduces two filters for more granular control:
* `quick_edit_enabled_for_post_type`
* `quick_edit_enabled_for_taxonomy`
Follow-up to [8857], [9083], [9098].
Props garyc40, sabernhardt, mukesh27, costdev, oglekler, wyrfel, peterwilsoncc, faguni22, robinwpdeveloper, webcommsat, johnbillion, azaozz, hellofromTonya, GunGeekATX, Jick, mikeschinkel, jane, nacin, helen, wonderboymusic, DrewAPicture, SergeyBiryukov.
Fixes #16502, #19343, #57596.
Built from https://develop.svn.wordpress.org/trunk@56611
git-svn-id: http://core.svn.wordpress.org/trunk@56123 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-09-18 09:19:19 -04:00
|
|
|
if ( $quick_edit_enabled ) {
|
|
|
|
$output .= '<div class="hidden" id="inline_' . $qe_data->term_id . '">';
|
|
|
|
$output .= '<div class="name">' . $qe_data->name . '</div>';
|
|
|
|
|
|
|
|
/** This filter is documented in wp-admin/edit-tag-form.php */
|
|
|
|
$output .= '<div class="slug">' . apply_filters( 'editable_slug', $qe_data->slug, $qe_data ) . '</div>';
|
|
|
|
$output .= '<div class="parent">' . $qe_data->parent . '</div></div>';
|
|
|
|
}
|
2010-10-24 22:57:43 -04:00
|
|
|
|
Coding Standards: Use more meaningful variable names for output in the admin.
This renames some variables for clarity, per the [https://developer.wordpress.org/coding-standards/wordpress-coding-standards/php/#naming-conventions Naming Conventions]:
> Don’t abbreviate variable names unnecessarily; let the code be unambiguous and self-documenting.
* `$out` is renamed to `$output` in various list table methods and admin functions.
* `$sep` is renamed to `$separator` in various list table methods and admin functions.
This affects:
* `WP_Comments_List_Table::handle_row_actions()`
* `WP_List_Table::row_actions()`
* `WP_Media_List_Table::column_default()`
* `WP_MS_Sites_List_Table::site_states()`
* `WP_MS_Users_List_Table::column_blogs()`
* `WP_Terms_List_Table::column_name()`
* `_wp_dashboard_recent_comments_row()`
* `image_align_input_fields()`
* `image_size_input_fields()`
* `wp_doc_link_parse()`
* `_post_states()`
* `_media_states()`
Follow-up to [8653], [8692], [8864], [8910], [8911], [8916], [9103], [9153], [10607], [15491], [17793], [32644], [54070].
Props mukesh27, costdev.
See #56448, #55647.
Built from https://develop.svn.wordpress.org/trunk@54071
git-svn-id: http://core.svn.wordpress.org/trunk@53630 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-05 13:19:09 -04:00
|
|
|
return $output;
|
2010-10-24 22:57:43 -04:00
|
|
|
}
|
|
|
|
|
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
|
|
|
|
*
|
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
|
Code Modernization: Fix parameter name mismatches for parent/child classes in `WP_List_Table::handle_row_actions()`.
Matches the method signatures of the parent class and each child class.
Why? PHP 8 introduces the ability to pass named arguments to function/method calls. This means the child and parent method signatures (i.e. parameter names) need to match.
For readability:
- `@since` clearly specifies the original parameter name and its new name as well as why the change happened
- in methods longer than a single line, the generic parameter is reassigned to the original parameter restoring it for context for use within the method. An inline comment is added to explain why this reassignment is made.
Follow-up to [32644], [32664], [32798], [38489], [49183], [49197].
Props jrf, hellofromTonya, sergeybiryukov, azaozz, desrosj, johnbillion.
See #51553.
Built from https://develop.svn.wordpress.org/trunk@51737
git-svn-id: http://core.svn.wordpress.org/trunk@51345 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-09-07 15:24:53 -04:00
|
|
|
* @since 5.9.0 Renamed `$tag` to `$item` to match parent class for PHP 8 named parameter support.
|
2015-05-28 22:41:25 -04:00
|
|
|
*
|
Code Modernization: Fix parameter name mismatches for parent/child classes in `WP_List_Table::handle_row_actions()`.
Matches the method signatures of the parent class and each child class.
Why? PHP 8 introduces the ability to pass named arguments to function/method calls. This means the child and parent method signatures (i.e. parameter names) need to match.
For readability:
- `@since` clearly specifies the original parameter name and its new name as well as why the change happened
- in methods longer than a single line, the generic parameter is reassigned to the original parameter restoring it for context for use within the method. An inline comment is added to explain why this reassignment is made.
Follow-up to [32644], [32664], [32798], [38489], [49183], [49197].
Props jrf, hellofromTonya, sergeybiryukov, azaozz, desrosj, johnbillion.
See #51553.
Built from https://develop.svn.wordpress.org/trunk@51737
git-svn-id: http://core.svn.wordpress.org/trunk@51345 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-09-07 15:24:53 -04:00
|
|
|
* @param WP_Term $item Tag being acted upon.
|
2016-08-31 20:40:29 -04:00
|
|
|
* @param string $column_name Current column name.
|
|
|
|
* @param string $primary Primary column name.
|
2020-01-11 12:59:04 -05:00
|
|
|
* @return string Row actions output for terms, or an empty string
|
|
|
|
* if the current column is not the primary column.
|
2015-05-28 22:41:25 -04:00
|
|
|
*/
|
Code Modernization: Fix parameter name mismatches for parent/child classes in `WP_List_Table::handle_row_actions()`.
Matches the method signatures of the parent class and each child class.
Why? PHP 8 introduces the ability to pass named arguments to function/method calls. This means the child and parent method signatures (i.e. parameter names) need to match.
For readability:
- `@since` clearly specifies the original parameter name and its new name as well as why the change happened
- in methods longer than a single line, the generic parameter is reassigned to the original parameter restoring it for context for use within the method. An inline comment is added to explain why this reassignment is made.
Follow-up to [32644], [32664], [32798], [38489], [49183], [49197].
Props jrf, hellofromTonya, sergeybiryukov, azaozz, desrosj, johnbillion.
See #51553.
Built from https://develop.svn.wordpress.org/trunk@51737
git-svn-id: http://core.svn.wordpress.org/trunk@51345 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-09-07 15:24:53 -04:00
|
|
|
protected function handle_row_actions( $item, $column_name, $primary ) {
|
2015-07-14 13:47:24 -04:00
|
|
|
if ( $primary !== $column_name ) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
Code Modernization: Fix parameter name mismatches for parent/child classes in `WP_List_Table::handle_row_actions()`.
Matches the method signatures of the parent class and each child class.
Why? PHP 8 introduces the ability to pass named arguments to function/method calls. This means the child and parent method signatures (i.e. parameter names) need to match.
For readability:
- `@since` clearly specifies the original parameter name and its new name as well as why the change happened
- in methods longer than a single line, the generic parameter is reassigned to the original parameter restoring it for context for use within the method. An inline comment is added to explain why this reassignment is made.
Follow-up to [32644], [32664], [32798], [38489], [49183], [49197].
Props jrf, hellofromTonya, sergeybiryukov, azaozz, desrosj, johnbillion.
See #51553.
Built from https://develop.svn.wordpress.org/trunk@51737
git-svn-id: http://core.svn.wordpress.org/trunk@51345 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-09-07 15:24:53 -04:00
|
|
|
// Restores the more descriptive, specific name for use within this method.
|
2023-09-14 08:46:20 -04:00
|
|
|
$tag = $item;
|
|
|
|
|
2015-05-28 22:41:25 -04:00
|
|
|
$taxonomy = $this->screen->taxonomy;
|
2017-11-30 18:11:00 -05:00
|
|
|
$uri = wp_doing_ajax() ? wp_get_referer() : $_SERVER['REQUEST_URI'];
|
2015-09-15 11:59:42 -04:00
|
|
|
|
2015-07-14 13:47:24 -04:00
|
|
|
$actions = array();
|
2021-04-21 14:53:00 -04:00
|
|
|
|
Taxonomy: Introduce more fine grained capabilities for managing taxonomy terms.
This introduces the singular `edit_term`, `delete_term`, and `assign_term` meta capabilities for terms, and switches the base capability name for tags from `manage_categories` to `manage_post_tags` and the corresponding `edit_post_tags`, `delete_post_tags`, and `assign_post_tags`.
All of these capabilities ultimately map to `manage_categories` so by default there is no change in the behaviour of the capabilities for categories, tags, or custom taxonomies. The `map_meta_cap` filter and the `capabilities` argument when registering a taxonomy now allow for control over editing, deleting, and assigning individual terms, as well as a separation of capabilities for tags from those of categories.
Fixes #35614
Props johnjamesjacoby for feedback
Built from https://develop.svn.wordpress.org/trunk@38698
git-svn-id: http://core.svn.wordpress.org/trunk@38641 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-09-30 18:40:28 -04:00
|
|
|
if ( current_user_can( 'edit_term', $tag->term_id ) ) {
|
2016-01-11 18:30:26 -05:00
|
|
|
$actions['edit'] = sprintf(
|
|
|
|
'<a href="%s" aria-label="%s">%s</a>',
|
2023-09-20 04:10:16 -04:00
|
|
|
esc_url(
|
|
|
|
add_query_arg(
|
|
|
|
'wp_http_referer',
|
|
|
|
urlencode( wp_unslash( $uri ) ),
|
|
|
|
get_edit_term_link( $tag, $taxonomy, $this->screen->post_type )
|
|
|
|
)
|
|
|
|
),
|
2019-09-02 20:41:05 -04:00
|
|
|
/* translators: %s: Taxonomy term name. */
|
2016-01-11 18:30:26 -05:00
|
|
|
esc_attr( sprintf( __( 'Edit “%s”' ), $tag->name ) ),
|
|
|
|
__( 'Edit' )
|
|
|
|
);
|
Quick Edit: Allow Quick Edit to be disabled for custom post types or taxonomies.
Some custom post types or taxonomies may not need the Quick Edit functionality, in which case adding hidden fields and rendering the form with the data to edit would be redundant.
This commit introduces two filters for more granular control:
* `quick_edit_enabled_for_post_type`
* `quick_edit_enabled_for_taxonomy`
Follow-up to [8857], [9083], [9098].
Props garyc40, sabernhardt, mukesh27, costdev, oglekler, wyrfel, peterwilsoncc, faguni22, robinwpdeveloper, webcommsat, johnbillion, azaozz, hellofromTonya, GunGeekATX, Jick, mikeschinkel, jane, nacin, helen, wonderboymusic, DrewAPicture, SergeyBiryukov.
Fixes #16502, #19343, #57596.
Built from https://develop.svn.wordpress.org/trunk@56611
git-svn-id: http://core.svn.wordpress.org/trunk@56123 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-09-18 09:19:19 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Filters whether Quick Edit should be enabled for the given taxonomy.
|
|
|
|
*
|
|
|
|
* @since 6.4.0
|
|
|
|
*
|
|
|
|
* @param bool $enable Whether to enable the Quick Edit functionality. Default true.
|
|
|
|
* @param string $taxonomy Taxonomy name.
|
|
|
|
*/
|
|
|
|
$quick_edit_enabled = apply_filters( 'quick_edit_enabled_for_taxonomy', true, $taxonomy );
|
|
|
|
|
|
|
|
if ( $quick_edit_enabled ) {
|
|
|
|
$actions['inline hide-if-no-js'] = sprintf(
|
|
|
|
'<button type="button" class="button-link editinline" aria-label="%s" aria-expanded="false">%s</button>',
|
|
|
|
/* translators: %s: Taxonomy term name. */
|
|
|
|
esc_attr( sprintf( __( 'Quick edit “%s” inline' ), $tag->name ) ),
|
|
|
|
__( 'Quick Edit' )
|
|
|
|
);
|
|
|
|
}
|
2016-01-11 18:30:26 -05:00
|
|
|
}
|
2021-04-21 14:53:00 -04:00
|
|
|
|
Taxonomy: Introduce more fine grained capabilities for managing taxonomy terms.
This introduces the singular `edit_term`, `delete_term`, and `assign_term` meta capabilities for terms, and switches the base capability name for tags from `manage_categories` to `manage_post_tags` and the corresponding `edit_post_tags`, `delete_post_tags`, and `assign_post_tags`.
All of these capabilities ultimately map to `manage_categories` so by default there is no change in the behaviour of the capabilities for categories, tags, or custom taxonomies. The `map_meta_cap` filter and the `capabilities` argument when registering a taxonomy now allow for control over editing, deleting, and assigning individual terms, as well as a separation of capabilities for tags from those of categories.
Fixes #35614
Props johnjamesjacoby for feedback
Built from https://develop.svn.wordpress.org/trunk@38698
git-svn-id: http://core.svn.wordpress.org/trunk@38641 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-09-30 18:40:28 -04:00
|
|
|
if ( current_user_can( 'delete_term', $tag->term_id ) ) {
|
2016-01-11 18:30:26 -05:00
|
|
|
$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 ),
|
2019-09-02 20:41:05 -04:00
|
|
|
/* translators: %s: Taxonomy term name. */
|
2016-01-11 18:30:26 -05:00
|
|
|
esc_attr( sprintf( __( 'Delete “%s”' ), $tag->name ) ),
|
|
|
|
__( 'Delete' )
|
|
|
|
);
|
|
|
|
}
|
2021-04-21 14:53:00 -04:00
|
|
|
|
2022-08-13 18:44:09 -04:00
|
|
|
if ( is_term_publicly_viewable( $tag ) ) {
|
2016-01-11 18:30:26 -05:00
|
|
|
$actions['view'] = sprintf(
|
|
|
|
'<a href="%s" aria-label="%s">%s</a>',
|
|
|
|
get_term_link( $tag ),
|
2019-09-02 20:41:05 -04:00
|
|
|
/* translators: %s: Taxonomy term name. */
|
2016-01-11 18:30:26 -05:00
|
|
|
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
|
2020-05-01 12:45:09 -04:00
|
|
|
* @since 3.0.0 Deprecated in favor of {@see '{$taxonomy}_row_actions'} filter.
|
|
|
|
* @since 5.4.2 Restored (un-deprecated).
|
2015-07-14 13:47:24 -04:00
|
|
|
*
|
2018-03-22 16:27:32 -04:00
|
|
|
* @param string[] $actions An array of action links to be displayed. Default
|
|
|
|
* 'Edit', 'Quick Edit', 'Delete', and 'View'.
|
|
|
|
* @param WP_Term $tag Term object.
|
2015-07-14 13:47:24 -04:00
|
|
|
*/
|
2020-05-01 12:45:09 -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.
|
|
|
|
*
|
2021-03-07 07:32:09 -05:00
|
|
|
* Possible hook names include:
|
|
|
|
*
|
|
|
|
* - `category_row_actions`
|
|
|
|
* - `post_tag_row_actions`
|
|
|
|
*
|
2015-07-14 13:47:24 -04:00
|
|
|
* @since 3.0.0
|
|
|
|
*
|
2018-03-22 16:27:32 -04:00
|
|
|
* @param string[] $actions An array of action links to be displayed. Default
|
|
|
|
* 'Edit', 'Quick Edit', 'Delete', and 'View'.
|
|
|
|
* @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 ) {
|
2017-06-26 20:34:41 -04:00
|
|
|
if ( $tag->description ) {
|
|
|
|
return $tag->description;
|
|
|
|
} else {
|
I18N: Mark screen reader strings as such with translator comments.
This aims to provide better context for translators and make it easier to determine that some strings contain hidden accessibility text and are not displayed in the UI.
Props kebbet, mercime, pavelevap, ocean90, swissspidy, Chouby, jipmoors, afercia, desrosj, costdev, audrasjb, SergeyBiryukov.
Fixes #29748.
Built from https://develop.svn.wordpress.org/trunk@55276
git-svn-id: http://core.svn.wordpress.org/trunk@54809 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-02-07 12:10:21 -05:00
|
|
|
return '<span aria-hidden="true">—</span><span class="screen-reader-text">' .
|
|
|
|
/* translators: Hidden accessibility text. */
|
|
|
|
__( 'No description' ) .
|
|
|
|
'</span>';
|
2017-06-26 20:34:41 -04:00
|
|
|
}
|
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_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 );
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( ! $ptype_object->show_ui ) {
|
2010-11-24 20:39:34 -05:00
|
|
|
return $count;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2010-11-24 20:39:34 -05:00
|
|
|
|
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 {
|
2017-11-30 18:11:00 -05:00
|
|
|
$args = array(
|
|
|
|
'taxonomy' => $tax->name,
|
|
|
|
'term' => $tag->slug,
|
|
|
|
);
|
2010-10-24 22:57:43 -04:00
|
|
|
}
|
|
|
|
|
2020-05-16 14:42:12 -04:00
|
|
|
if ( 'post' !== $this->screen->post_type ) {
|
2012-09-19 08:43:31 -04:00
|
|
|
$args['post_type'] = $this->screen->post_type;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2010-11-24 20:39:34 -05:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( 'attachment' === $this->screen->post_type ) {
|
|
|
|
return "<a href='" . esc_url( add_query_arg( $args, 'upload.php' ) ) . "'>$count</a>";
|
|
|
|
}
|
2012-09-21 18:52:54 -04:00
|
|
|
|
2017-11-30 18:11:00 -05: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 );
|
2021-04-21 14:53:00 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( $count ) {
|
2010-12-27 11:57:19 -05:00
|
|
|
$count = "<a href='link-manager.php?cat_id=$tag->term_id'>$count</a>";
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2021-04-21 14:53:00 -04:00
|
|
|
|
2010-10-24 22:57:43 -04:00
|
|
|
return $count;
|
|
|
|
}
|
|
|
|
|
2014-11-30 19:33:23 -05:00
|
|
|
/**
|
2021-09-07 12:57:58 -04:00
|
|
|
* @since 5.9.0 Renamed `$tag` to `$item` to match parent class for PHP 8 named parameter support.
|
Code Modernization: Fix parameter name mismatches for parent/child classes in `WP_List_Table::column_default()`.
Matches the method signatures of the parent class and each child class.
Why? PHP 8 introduces the ability to pass named arguments to function/method calls. This means the child and parent method signatures (i.e. parameter names) need to match.
For readability:
- `@since` clearly specifies the original parameter name and its new name as well as why the change happened
- in methods longer than a single line, the generic parameter is reassigned to the original parameter restoring it for context for use within the method. An inline comment is added to explain why this reassignment is made.
Follow-up to [15632], [30679], [31210], [32740], [32753], [32754], [32755], [32756], [32757].
Props jrf, hellofromTonya, @sergeybiryukov, @azaozz, @desrosj, @johnbillion
See #51553.
Built from https://develop.svn.wordpress.org/trunk@51728
git-svn-id: http://core.svn.wordpress.org/trunk@51334 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-09-02 18:26:56 -04:00
|
|
|
*
|
|
|
|
* @param WP_Term $item Term object.
|
2020-07-23 16:01:04 -04:00
|
|
|
* @param string $column_name Name of the column.
|
2014-11-30 19:33:23 -05:00
|
|
|
* @return string
|
|
|
|
*/
|
Code Modernization: Fix parameter name mismatches for parent/child classes in `WP_List_Table::column_default()`.
Matches the method signatures of the parent class and each child class.
Why? PHP 8 introduces the ability to pass named arguments to function/method calls. This means the child and parent method signatures (i.e. parameter names) need to match.
For readability:
- `@since` clearly specifies the original parameter name and its new name as well as why the change happened
- in methods longer than a single line, the generic parameter is reassigned to the original parameter restoring it for context for use within the method. An inline comment is added to explain why this reassignment is made.
Follow-up to [15632], [30679], [31210], [32740], [32753], [32754], [32755], [32756], [32757].
Props jrf, hellofromTonya, @sergeybiryukov, @azaozz, @desrosj, @johnbillion
See #51553.
Built from https://develop.svn.wordpress.org/trunk@51728
git-svn-id: http://core.svn.wordpress.org/trunk@51334 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-09-02 18:26:56 -04:00
|
|
|
public function column_default( $item, $column_name ) {
|
2023-09-14 08:46:20 -04:00
|
|
|
// Restores the more descriptive, specific name for use within this method.
|
|
|
|
$tag = $item;
|
|
|
|
|
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.
|
|
|
|
*
|
2021-03-07 07:32:09 -05:00
|
|
|
* Possible hook names include:
|
|
|
|
*
|
|
|
|
* - `manage_category_custom_column`
|
|
|
|
* - `manage_post_tag_custom_column`
|
|
|
|
*
|
2014-02-04 02:56:12 -05:00
|
|
|
* @since 2.8.0
|
|
|
|
*
|
Code Modernization: Fix parameter name mismatches for parent/child classes in `WP_List_Table::column_default()`.
Matches the method signatures of the parent class and each child class.
Why? PHP 8 introduces the ability to pass named arguments to function/method calls. This means the child and parent method signatures (i.e. parameter names) need to match.
For readability:
- `@since` clearly specifies the original parameter name and its new name as well as why the change happened
- in methods longer than a single line, the generic parameter is reassigned to the original parameter restoring it for context for use within the method. An inline comment is added to explain why this reassignment is made.
Follow-up to [15632], [30679], [31210], [32740], [32753], [32754], [32755], [32756], [32757].
Props jrf, hellofromTonya, @sergeybiryukov, @azaozz, @desrosj, @johnbillion
See #51553.
Built from https://develop.svn.wordpress.org/trunk@51728
git-svn-id: http://core.svn.wordpress.org/trunk@51334 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-09-02 18:26:56 -04:00
|
|
|
* @param string $string Custom column output. Default empty.
|
2014-02-04 02:56:12 -05:00
|
|
|
* @param string $column_name Name of the column.
|
|
|
|
* @param int $term_id Term ID.
|
|
|
|
*/
|
2023-09-14 08:46:20 -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
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( ! current_user_can( $tax->cap->edit_terms ) ) {
|
2010-10-24 22:57:43 -04:00
|
|
|
return;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2018-08-16 21:51:36 -04:00
|
|
|
?>
|
2010-10-24 22:57:43 -04:00
|
|
|
|
2020-01-28 19:45:18 -05:00
|
|
|
<form method="get">
|
|
|
|
<table style="display: none"><tbody id="inlineedit">
|
|
|
|
|
|
|
|
<tr id="inline-edit" class="inline-edit-row" style="display: none">
|
|
|
|
<td colspan="<?php echo $this->get_column_count(); ?>" class="colspanchange">
|
2022-04-08 13:05:03 -04:00
|
|
|
<div class="inline-edit-wrapper">
|
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>
|
|
|
|
|
Networks and Sites: Officially remove global terms.
Global terms was a feature from the WordPress MU days where multisite and single site installs used different code bases.
In WordPress 3.0, WordPress MU was merged into one location and the UI [14854] and “on” switch [14880] for global terms were completely removed.
Even before this merge, global terms was bug infested and unreliable. After [14854]/[14880], the feature was no longer maintained and became increasingly broken as taxonomies progressed without it (term splitting and term meta do not work at all). At this point, the feature has not worked in 12+ years and there’s no hope for saving it.
This deprecates the remaining global terms related code and no-ops the functions.
Global terms, you don’t have to go home, but you can’t stay here.
Props scribu, wonderboymusic, SergeyBiryukov, nacin, pento, desrosj, johnjamesjacoby, johnbillion, dd32.
Fixes #21734.
Built from https://develop.svn.wordpress.org/trunk@54240
git-svn-id: http://core.svn.wordpress.org/trunk@53799 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-19 22:51:09 -04:00
|
|
|
<label>
|
|
|
|
<span class="title"><?php _e( 'Slug' ); ?></span>
|
|
|
|
<span class="input-text-wrap"><input type="text" name="slug" class="ptitle" value="" /></span>
|
|
|
|
</label>
|
2020-01-28 19:45:18 -05:00
|
|
|
</div>
|
|
|
|
</fieldset>
|
|
|
|
|
|
|
|
<?php
|
|
|
|
$core_columns = array(
|
|
|
|
'cb' => true,
|
|
|
|
'description' => true,
|
|
|
|
'name' => true,
|
|
|
|
'slug' => true,
|
|
|
|
'posts' => true,
|
|
|
|
);
|
2010-10-24 22:57:43 -04:00
|
|
|
|
2020-01-28 19:45:18 -05:00
|
|
|
list( $columns ) = $this->get_column_info();
|
2010-11-14 13:00:09 -05:00
|
|
|
|
2020-01-28 19:45:18 -05:00
|
|
|
foreach ( $columns as $column_name => $column_display_name ) {
|
|
|
|
if ( isset( $core_columns[ $column_name ] ) ) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
/** This action is documented in wp-admin/includes/class-wp-posts-list-table.php */
|
|
|
|
do_action( 'quick_edit_custom_box', $column_name, 'edit-tags', $this->screen->taxonomy );
|
2018-08-16 21:51:36 -04:00
|
|
|
}
|
2020-01-28 19:45:18 -05:00
|
|
|
?>
|
2010-10-24 22:57:43 -04:00
|
|
|
|
2020-01-28 19:45:18 -05:00
|
|
|
<div class="inline-edit-save submit">
|
2022-03-29 15:08:19 -04:00
|
|
|
<button type="button" class="save button button-primary"><?php echo $tax->labels->update_item; ?></button>
|
|
|
|
<button type="button" class="cancel button"><?php _e( 'Cancel' ); ?></button>
|
2020-01-28 19:45:18 -05:00
|
|
|
<span class="spinner"></span>
|
2017-11-30 18:11:00 -05:00
|
|
|
|
2020-01-28 19:45:18 -05:00
|
|
|
<?php wp_nonce_field( 'taxinlineeditnonce', '_inline_edit', false ); ?>
|
|
|
|
<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
|
|
|
|
2023-09-13 21:13:20 -04:00
|
|
|
<?php
|
|
|
|
wp_admin_notice(
|
|
|
|
'<p class="error"></p>',
|
|
|
|
array(
|
|
|
|
'type' => 'error',
|
|
|
|
'additional_classes' => array( 'notice-alt', 'inline', 'hidden' ),
|
|
|
|
'paragraph_wrap' => false,
|
|
|
|
)
|
|
|
|
);
|
|
|
|
?>
|
2017-10-02 17:52:52 -04:00
|
|
|
</div>
|
2022-04-08 13:05:03 -04:00
|
|
|
</div>
|
2020-01-28 19:45:18 -05:00
|
|
|
|
|
|
|
</td></tr>
|
|
|
|
|
|
|
|
</tbody></table>
|
|
|
|
</form>
|
2018-08-16 21:51:36 -04:00
|
|
|
<?php
|
2010-10-24 22:57:43 -04:00
|
|
|
}
|
|
|
|
}
|