wp_reset_vars( array( 'orderby', 'order', 's' ) );
$themes = array(
+ /**
+ * Filter the full array of WP_Theme objects to list in the Multisite
+ * themes list table.
+ *
+ * @since 3.1.0
+ *
+ * @param array $all An array of WP_Theme objects to display in the list table.
+ */
'all' => apply_filters( 'all_themes', wp_get_themes() ),
'search' => array(),
'enabled' => array(),
if ( $s ) {
$status = 'search';
- $themes['search'] = array_filter( array_merge( $themes['all'], $themes['broken'] ), array( &$this, '_search_callback' ) );
+ $themes['search'] = array_filter( array_merge( $themes['all'], $themes['broken'] ), array( $this, '_search_callback' ) );
}
$totals = array();
if ( 'ASC' == $order )
$this->items = array_reverse( $this->items );
} else {
- uasort( $this->items, array( &$this, '_order_callback' ) );
+ uasort( $this->items, array( $this, '_order_callback' ) );
}
}
function _search_callback( $theme ) {
static $term;
if ( is_null( $term ) )
- $term = stripslashes( $_REQUEST['s'] );
+ $term = wp_unslash( $_REQUEST['s'] );
foreach ( array( 'Name', 'Description', 'Author', 'Author', 'AuthorURI' ) as $field ) {
// Don't mark up; Do translate.
}
function display_rows() {
- foreach ( $this->items as $key => $theme )
- $this->single_row( $key, $theme );
+ foreach ( $this->items as $theme )
+ $this->single_row( $theme );
}
- function single_row( $key, $theme ) {
+ function single_row( $theme ) {
global $status, $page, $s, $totals;
$context = $status;
if ( ! $allowed && current_user_can( 'delete_themes' ) && ! $this->is_site_themes && $stylesheet != get_option( 'stylesheet' ) && $stylesheet != get_option( 'template' ) )
$actions['delete'] = '<a href="' . esc_url( wp_nonce_url( 'themes.php?action=delete-selected&checked[]=' . $theme_key . '&theme_status=' . $context . '&paged=' . $page . '&s=' . $s, 'bulk-themes' ) ) . '" title="' . esc_attr__( 'Delete this theme' ) . '" class="delete">' . __( 'Delete' ) . '</a>';
- $actions = apply_filters( 'theme_action_links', array_filter( $actions ), $stylesheet, $theme, $context );
- $actions = apply_filters( "theme_action_links_$stylesheet", $actions, $stylesheet, $theme, $context );
+ /**
+ * Filter the action links displayed for each theme in the Multisite
+ * themes list table.
+ *
+ * The action links displayed are determined by the theme's status, and
+ * which Multisite themes list table is being displayed - the Network
+ * themes list table (themes.php), which displays all installed themes,
+ * or the Site themes list table (site-themes.php), which displays the
+ * non-network enabled themes when editing a site in the Network admin.
+ *
+ * The default action links for the Network themes list table include
+ * 'Network Enable', 'Network Disable', 'Edit', and 'Delete'.
+ *
+ * The default action links for the Site themes list table include
+ * 'Enable', 'Disable', and 'Edit'.
+ *
+ * @since 2.8.0
+ *
+ * @param array $actions An array of action links.
+ * @param WP_Theme $theme The current WP_Theme object.
+ * @param string $context Status of the theme.
+ */
+ $actions = apply_filters( 'theme_action_links', array_filter( $actions ), $theme, $context );
+
+ /**
+ * Filter the action links of a specific theme in the Multisite themes
+ * list table.
+ *
+ * The dynamic portion of the hook name, $stylesheet, refers to the
+ * directory name of the theme, which in most cases is synonymous
+ * with the template name.
+ *
+ * @since 3.1.0
+ *
+ * @param array $actions An array of action links.
+ * @param WP_Theme $theme The current WP_Theme object.
+ * @param string $context Status of the theme.
+ */
+ $actions = apply_filters( "theme_action_links_$stylesheet", $actions, $theme, $context );
$class = ! $allowed ? 'inactive' : 'active';
$checkbox_id = "checkbox_" . md5( $theme->get('Name') );
case 'description':
echo "<td class='column-description desc'$style>";
if ( $theme->errors() ) {
- $pre = $status == 'broken' ? '' : __( 'Broken Theme:' ) . ' ';
+ $pre = $status == 'broken' ? __( 'Broken Theme:' ) . ' ' : '';
echo '<p><strong class="attention">' . $pre . $theme->errors()->get_error_message() . '</strong></p>';
}
echo "<div class='theme-description'><p>" . $theme->display( 'Description' ) . "</p></div>
if ( $theme->get('ThemeURI') )
$theme_meta[] = '<a href="' . $theme->display('ThemeURI') . '" title="' . esc_attr__( 'Visit theme homepage' ) . '">' . __( 'Visit Theme Site' ) . '</a>';
+ /**
+ * Filter the array of row meta for each theme in the Multisite themes
+ * list table.
+ *
+ * @since 3.1.0
+ *
+ * @param array $theme_meta An array of the theme's metadata,
+ * including the version, author, and
+ * theme URI.
+ * @param string $stylesheet Directory name of the theme.
+ * @param WP_Theme $theme WP_Theme object.
+ * @param string $status Status of the theme.
+ */
$theme_meta = apply_filters( 'theme_row_meta', $theme_meta, $stylesheet, $theme, $status );
echo implode( ' | ', $theme_meta );
default:
echo "<td class='$column_name column-$column_name'$style>";
+
+ /**
+ * Fires inside each custom column of the Multisite themes list table.
+ *
+ * @since 3.1.0
+ *
+ * @param string $column_name Name of the column.
+ * @param string $stylesheet Directory name of the theme.
+ * @param WP_Theme $theme Current WP_Theme object.
+ */
do_action( 'manage_themes_custom_column', $column_name, $stylesheet, $theme );
echo "</td>";
}
if ( $this->is_site_themes )
remove_action( "after_theme_row_$stylesheet", 'wp_theme_update_row' );
+
+ /**
+ * Fires after each row in the Multisite themes list table.
+ *
+ * @since 3.1.0
+ *
+ * @param string $stylesheet Directory name of the theme.
+ * @param WP_Theme $theme Current WP_Theme object.
+ * @param string $status Status of the theme.
+ */
do_action( 'after_theme_row', $stylesheet, $theme, $status );
+
+ /**
+ * Fires after each specific row in the Multisite themes list table.
+ *
+ * The dynamic portion of the hook name, $stylesheet, refers to the
+ * directory name of the theme, most often synonymous with the template
+ * name of the theme.
+ *
+ * @since 3.5.0
+ *
+ * @param string $stylesheet Directory name of the theme.
+ * @param WP_Theme $theme Current WP_Theme object.
+ * @param string $status Status of the theme.
+ */
do_action( "after_theme_row_$stylesheet", $stylesheet, $theme, $status );
}
}