2010-10-24 22:57:43 -04:00
< ? php
/**
2015-10-17 11:13:25 -04:00
* List Table API : WP_Themes_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 installed themes 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_Themes_List_Table extends WP_List_Table {
2010-10-24 22:57:43 -04:00
2012-02-29 17:19:18 -05:00
protected $search_terms = array ();
2017-11-30 18:11:00 -05:00
public $features = array ();
2012-02-29 17:19:18 -05:00
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 .
*
* @ 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 () ) {
2017-11-30 18:11:00 -05:00
parent :: __construct (
array (
'ajax' => true ,
'screen' => isset ( $args [ 'screen' ] ) ? $args [ 'screen' ] : null ,
)
);
2012-02-09 12:20:26 -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 () {
2016-07-09 20:51:30 -04:00
// Do not check edit_theme_options here. Ajax calls for available themes require switch_themes.
2012-03-02 17:09:26 -05:00
return current_user_can ( 'switch_themes' );
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 () {
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
$themes = wp_get_themes ( array ( 'allowed' => true ) );
2010-10-24 22:57:43 -04:00
2017-11-30 18:11:00 -05:00
if ( ! empty ( $_REQUEST [ 's' ] ) ) {
2013-03-01 12:00:25 -05:00
$this -> search_terms = array_unique ( array_filter ( array_map ( 'trim' , explode ( ',' , strtolower ( wp_unslash ( $_REQUEST [ 's' ] ) ) ) ) ) );
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 [ 'features' ] ) ) {
2010-10-24 22:57:43 -04:00
$this -> features = $_REQUEST [ 'features' ];
2017-11-30 18:11:00 -05:00
}
2010-10-24 22:57:43 -04:00
2012-02-29 17:19:18 -05:00
if ( $this -> search_terms || $this -> features ) {
2010-10-24 22:57:43 -04:00
foreach ( $themes as $key => $theme ) {
2017-11-30 18:11:00 -05:00
if ( ! $this -> search_theme ( $theme ) ) {
2010-10-24 22:57:43 -04:00
unset ( $themes [ $key ] );
2017-11-30 18:11:00 -05:00
}
2010-10-24 22:57:43 -04:00
}
}
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
unset ( $themes [ get_option ( 'stylesheet' ) ] );
WP_Theme :: sort_by_name ( $themes );
2010-10-24 22:57:43 -04:00
2012-09-05 16:33:34 -04:00
$per_page = 36 ;
2017-11-30 18:11:00 -05:00
$page = $this -> get_pagenum ();
2010-10-24 22:57:43 -04:00
$start = ( $page - 1 ) * $per_page ;
2012-02-23 09:42:01 -05:00
$this -> items = array_slice ( $themes , $start , $per_page , true );
2010-10-24 22:57:43 -04:00
2017-11-30 18:11:00 -05:00
$this -> set_pagination_args (
array (
'total_items' => count ( $themes ),
'per_page' => $per_page ,
'infinite_scroll' => true ,
)
);
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 no_items () {
2012-02-29 17:19:18 -05:00
if ( $this -> search_terms || $this -> features ) {
2011-01-14 19:35:29 -05:00
_e ( 'No items found.' );
return ;
}
2011-02-09 12:35:36 -05:00
2016-08-31 00:55:54 -04:00
$blog_id = get_current_blog_id ();
2010-12-09 11:12:04 -05:00
if ( is_multisite () ) {
if ( current_user_can ( 'install_themes' ) && current_user_can ( 'manage_network_themes' ) ) {
2016-08-31 00:55:54 -04:00
printf ( __ ( 'You only have one theme enabled for this site right now. Visit the Network Admin to <a href="%1$s">enable</a> or <a href="%2$s">install</a> more themes.' ), network_admin_url ( 'site-themes.php?id=' . $blog_id ), network_admin_url ( 'theme-install.php' ) );
2010-12-09 11:12:04 -05:00
return ;
} elseif ( current_user_can ( 'manage_network_themes' ) ) {
2016-08-31 00:55:54 -04:00
printf ( __ ( 'You only have one theme enabled for this site right now. Visit the Network Admin to <a href="%1$s">enable</a> more themes.' ), network_admin_url ( 'site-themes.php?id=' . $blog_id ) );
2010-12-09 11:12:04 -05:00
return ;
}
2014-07-17 05:14:16 -04:00
// Else, fallthrough. install_themes doesn't help if you can't enable it.
2010-12-06 16:37:35 -05:00
} else {
2010-12-09 11:12:04 -05:00
if ( current_user_can ( 'install_themes' ) ) {
2016-04-22 02:57:26 -04:00
printf ( __ ( 'You only have one theme installed right now. Live a little! You can choose from over 1,000 free themes in the WordPress Theme Directory at any time: just click on the <a href="%s">Install Themes</a> tab above.' ), admin_url ( 'theme-install.php' ) );
2010-12-09 11:12:04 -05:00
return ;
}
2010-12-06 16:37:35 -05:00
}
2010-12-09 11:12:04 -05:00
// Fallthrough.
2015-10-07 13:11:25 -04:00
printf ( __ ( 'Only the current theme is available to you. Contact the %s administrator for information about accessing additional themes.' ), get_site_option ( 'site_name' ) );
2010-10-24 22:57:43 -04:00
}
2011-02-09 12:35:36 -05:00
2014-11-30 19:33:23 -05:00
/**
* @ param string $which
*/
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 tablenav ( $which = 'top' ) {
2017-11-30 18:11:00 -05:00
if ( $this -> get_pagination_arg ( 'total_pages' ) <= 1 ) {
2011-01-14 19:35:29 -05:00
return ;
2017-11-30 18:11:00 -05:00
}
2011-02-09 12:35:36 -05:00
?>
2011-09-15 00:26:26 -04:00
< div class = " tablenav themes <?php echo $which ; ?> " >
2011-02-09 12:35:36 -05:00
< ? php $this -> pagination ( $which ); ?>
2012-10-10 16:34:19 -04:00
< span class = " spinner " ></ span >
2012-09-26 15:57:44 -04:00
< br class = " clear " />
2011-02-09 12:35:36 -05:00
</ div >
< ? php
2011-01-14 19:35:29 -05:00
}
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 display () {
2017-11-30 18:11:00 -05:00
wp_nonce_field ( 'fetch-list-' . get_class ( $this ), '_ajax_fetch_list_nonce' );
2018-08-16 21:51:36 -04:00
?>
2011-02-09 12:35:36 -05:00
< ? php $this -> tablenav ( 'top' ); ?>
2010-10-24 22:57:43 -04:00
2011-09-15 00:26:26 -04:00
< div id = " availablethemes " >
< ? php $this -> display_rows_or_placeholder (); ?>
</ div >
2010-10-24 22:57:43 -04:00
2011-02-09 12:35:36 -05:00
< ? php $this -> tablenav ( 'bottom' ); ?>
2018-08-16 21:51:36 -04:00
< ? php
2010-10-24 22:57:43 -04:00
}
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
return array ();
}
2015-05-29 17:32:24 -04:00
/**
*/
2014-07-13 18:09:16 -04:00
public function display_rows_or_placeholder () {
2013-09-11 20:03:10 -04:00
if ( $this -> has_items () ) {
$this -> display_rows ();
} else {
echo '<div class="no-items">' ;
$this -> no_items ();
echo '</div>' ;
}
}
2015-05-29 17:32:24 -04:00
/**
*/
2014-07-13 18:09:16 -04:00
public function display_rows () {
2010-10-24 22:57:43 -04:00
$themes = $this -> items ;
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
2017-11-30 18:11:00 -05:00
foreach ( $themes as $theme ) :
?>
< div class = " available-theme " >
< ? php
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
2012-04-09 20:15:13 -04:00
$template = $theme -> get_template ();
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
$stylesheet = $theme -> get_stylesheet ();
2017-11-30 18:11:00 -05:00
$title = $theme -> display ( 'Name' );
$version = $theme -> display ( 'Version' );
$author = $theme -> display ( 'Author' );
2012-03-02 21:40:43 -05:00
2017-11-30 18:11:00 -05:00
$activate_link = wp_nonce_url ( 'themes.php?action=activate&template=' . urlencode ( $template ) . '&stylesheet=' . urlencode ( $stylesheet ), 'switch-theme_' . $stylesheet );
2012-04-09 20:15:13 -04:00
2017-11-30 18:11:00 -05:00
$actions = array ();
2012-06-06 16:34:24 -04:00
$actions [ 'activate' ] = '<a href="' . $activate_link . '" class="activatelink" title="'
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
. esc_attr ( sprintf ( __ ( 'Activate “%s”' ), $title ) ) . '">' . __ ( 'Activate' ) . '</a>' ;
2012-06-06 16:34:24 -04:00
2014-07-14 15:01:16 -04:00
if ( current_user_can ( 'edit_theme_options' ) && current_user_can ( 'customize' ) ) {
2012-06-06 16:34:24 -04:00
$actions [ 'preview' ] .= '<a href="' . wp_customize_url ( $stylesheet ) . '" class="load-customize hide-if-no-customize">'
. __ ( 'Live Preview' ) . '</a>' ;
2014-07-14 15:01:16 -04:00
}
2012-06-06 16:34:24 -04:00
2017-11-30 18:11:00 -05:00
if ( ! is_multisite () && current_user_can ( 'delete_themes' ) ) {
2012-09-04 18:35:12 -04:00
$actions [ 'delete' ] = '<a class="submitdelete deletion" href="' . wp_nonce_url ( 'themes.php?action=delete&stylesheet=' . urlencode ( $stylesheet ), 'delete-theme_' . $stylesheet )
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
. '" onclick="' . " return confirm( ' " . esc_js ( sprintf ( __ ( " You are about to delete this theme '%s' \n 'Cancel' to stop, 'OK' to delete. " ), $title ) )
. " ' ); " . '">' . __ ( 'Delete' ) . '</a>' ;
2017-11-30 18:11:00 -05:00
}
2012-03-02 21:40:43 -05:00
2014-02-04 03:25:13 -05:00
/** This filter is documented in wp-admin/includes/class-wp-ms-themes-list-table.php */
2017-11-30 18:11:00 -05:00
$actions = apply_filters ( 'theme_action_links' , $actions , $theme , 'all' );
2014-02-04 03:25:13 -05:00
/** This filter is documented in wp-admin/includes/class-wp-ms-themes-list-table.php */
2017-08-03 11:43:43 -04:00
$actions = apply_filters ( " theme_action_links_ $stylesheet " , $actions , $theme , 'all' );
2012-04-12 17:10:40 -04:00
$delete_action = isset ( $actions [ 'delete' ] ) ? '<div class="delete-theme">' . $actions [ 'delete' ] . '</div>' : '' ;
unset ( $actions [ 'delete' ] );
2012-03-02 21:40:43 -05:00
2019-07-01 08:52:01 -04:00
$screenshot = $theme -> get_screenshot ();
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
?>
2012-04-16 10:02:28 -04:00
2015-07-29 14:36:26 -04:00
< span class = " screenshot hide-if-customize " >
2019-07-01 08:52:01 -04:00
< ? php if ( $screenshot ) : ?>
2012-04-16 10:02:28 -04:00
< img src = " <?php echo esc_url( $screenshot ); ?> " alt = " " />
< ? php endif ; ?>
2015-07-29 14:36:26 -04:00
</ span >
2012-04-18 16:57:06 -04:00
< a href = " <?php echo wp_customize_url( $stylesheet ); ?> " class = " screenshot load-customize hide-if-no-customize " >
2019-07-01 08:52:01 -04:00
< ? php if ( $screenshot ) : ?>
2012-04-16 10:02:28 -04:00
< img src = " <?php echo esc_url( $screenshot ); ?> " alt = " " />
< ? php endif ; ?>
</ a >
2012-04-09 20:15:13 -04:00
< h3 >< ? php echo $title ; ?> </h3>
< div class = " theme-author " >< ? php printf ( __ ( 'By %s' ), $author ); ?> </div>
< div class = " action-links " >
2012-04-12 17:10:40 -04:00
< ul >
2017-11-30 18:11:00 -05:00
< ? php foreach ( $actions as $action ) : ?>
2012-04-12 17:10:40 -04:00
< li >< ? php echo $action ; ?> </li>
< ? php endforeach ; ?>
2017-11-30 18:11:00 -05:00
< li class = " hide-if-no-js " >< a href = " # " class = " theme-detail " >< ? php _e ( 'Details' ); ?> </a></li>
2012-04-12 17:10:40 -04:00
</ ul >
< ? php echo $delete_action ; ?>
< ? php theme_update_available ( $theme ); ?>
2012-04-09 20:15:13 -04:00
</ div >
2012-03-02 21:40:43 -05:00
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
< div class = " themedetaildiv hide-if-js " >
2017-11-30 18:11:00 -05:00
< p >< strong >< ? php _e ( 'Version:' ); ?> </strong> <?php echo $version; ?></p>
< p >< ? php echo $theme -> display ( 'Description' ); ?> </p>
< ? php
if ( $theme -> parent () ) {
printf (
2019-04-01 07:55:52 -04:00
/* translators: %s: link to documentation on child themes */
2017-11-30 18:11:00 -05:00
' <p class="howto">' . __ ( 'This <a href="%1$s">child theme</a> requires its parent theme, %2$s.' ) . '</p>' ,
2019-04-01 07:55:52 -04:00
__ ( 'https://developer.wordpress.org/themes/advanced-topics/child-themes/' ),
2017-11-30 18:11:00 -05:00
$theme -> parent () -> display ( 'Name' )
);
}
?>
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
</ div >
2012-04-09 20:15:13 -04:00
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
</ div >
2018-08-16 21:51:36 -04:00
< ? php
2012-04-09 20:15:13 -04:00
endforeach ;
2010-10-24 22:57:43 -04:00
}
2014-11-30 19:33:23 -05:00
/**
* @ param WP_Theme $theme
* @ 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 search_theme ( $theme ) {
2012-02-28 15:51:19 -05:00
// Search the features
2012-02-29 17:19:18 -05:00
foreach ( $this -> features as $word ) {
2017-11-30 18:11:00 -05:00
if ( ! in_array ( $word , $theme -> get ( 'Tags' ) ) ) {
2012-02-29 17:19:18 -05:00
return false ;
2017-11-30 18:11:00 -05:00
}
2012-02-28 15:51:19 -05:00
}
2010-10-24 22:57:43 -04:00
// Match all phrases
2012-02-29 17:19:18 -05:00
foreach ( $this -> search_terms as $word ) {
2017-11-30 18:11:00 -05:00
if ( in_array ( $word , $theme -> get ( 'Tags' ) ) ) {
2012-02-29 17:19:18 -05:00
continue ;
2017-11-30 18:11:00 -05:00
}
2012-02-29 17:19:18 -05:00
foreach ( array ( 'Name' , 'Description' , 'Author' , 'AuthorURI' ) as $header ) {
// Don't mark up; Do translate.
2014-03-11 18:24:15 -04:00
if ( false !== stripos ( strip_tags ( $theme -> display ( $header , false , true ) ), $word ) ) {
2012-02-29 17:19:18 -05:00
continue 2 ;
2014-03-11 18:24:15 -04:00
}
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
}
2012-02-29 17:19:18 -05:00
2017-11-30 18:11:00 -05:00
if ( false !== stripos ( $theme -> get_stylesheet (), $word ) ) {
2012-02-29 17:19:18 -05:00
continue ;
2017-11-30 18:11:00 -05:00
}
2012-02-29 17:19:18 -05:00
2017-11-30 18:11:00 -05:00
if ( false !== stripos ( $theme -> get_template (), $word ) ) {
2012-02-29 17:19:18 -05:00
continue ;
2017-11-30 18:11:00 -05:00
}
2012-02-29 17:19:18 -05:00
return false ;
2010-10-24 22:57:43 -04:00
}
return true ;
}
2012-03-02 17:09:26 -05:00
/**
* Send required variables to JavaScript land
*
2013-12-24 21:00:11 -05:00
* @ since 3.4 . 0
2014-11-30 19:33:23 -05:00
*
* @ param array $extra_args
2012-03-02 17:09:26 -05:00
*/
2014-07-13 18:09:16 -04:00
public function _js_vars ( $extra_args = array () ) {
2013-03-01 12:00:25 -05:00
$search_string = isset ( $_REQUEST [ 's' ] ) ? esc_attr ( wp_unslash ( $_REQUEST [ 's' ] ) ) : '' ;
2012-03-02 17:09:26 -05:00
$args = array (
2017-11-30 18:11:00 -05:00
'search' => $search_string ,
'features' => $this -> features ,
'paged' => $this -> get_pagenum (),
2012-03-02 18:06:31 -05:00
'total_pages' => ! empty ( $this -> _pagination_args [ 'total_pages' ] ) ? $this -> _pagination_args [ 'total_pages' ] : 1 ,
2012-03-02 17:09:26 -05:00
);
2017-11-30 18:11:00 -05:00
if ( is_array ( $extra_args ) ) {
2012-03-02 18:06:31 -05:00
$args = array_merge ( $args , $extra_args );
2017-11-30 18:11:00 -05:00
}
2012-03-02 17:09:26 -05:00
2014-10-28 14:35:19 -04:00
printf ( " <script type='text/javascript'>var theme_list_args = %s;</script> \n " , wp_json_encode ( $args ) );
2012-03-02 21:40:43 -05:00
parent :: _js_vars ();
2012-03-02 17:09:26 -05:00
}
2010-10-24 22:57:43 -04:00
}