WP_MS_Themes_List_Table::column_name( WP_Theme $theme )

In this article

Handles the name column output.

Parameters

$themeWP_Themerequired
The current WP_Theme object.

Source

public function column_name( $theme ) {
	global $status, $page, $s;

	$context = $status;

	if ( $this->is_site_themes ) {
		$url     = "site-themes.php?id={$this->site_id}&";
		$allowed = $theme->is_allowed( 'site', $this->site_id );
	} else {
		$url     = 'themes.php?';
		$allowed = $theme->is_allowed( 'network' );
	}

	// Pre-order.
	$actions = array(
		'enable'  => '',
		'disable' => '',
		'delete'  => '',
	);

	$stylesheet = $theme->get_stylesheet();
	$theme_key  = urlencode( $stylesheet );

	if ( ! $allowed ) {
		if ( ! $theme->errors() ) {
			$url = add_query_arg(
				array(
					'action' => 'enable',
					'theme'  => $theme_key,
					'paged'  => $page,
					's'      => $s,
				),
				$url
			);

			if ( $this->is_site_themes ) {
				/* translators: %s: Theme name. */
				$aria_label = sprintf( __( 'Enable %s' ), $theme->display( 'Name' ) );
			} else {
				/* translators: %s: Theme name. */
				$aria_label = sprintf( __( 'Network Enable %s' ), $theme->display( 'Name' ) );
			}

			$actions['enable'] = sprintf(
				'<a href="%s" class="edit" aria-label="%s">%s</a>',
				esc_url( wp_nonce_url( $url, 'enable-theme_' . $stylesheet ) ),
				esc_attr( $aria_label ),
				( $this->is_site_themes ? __( 'Enable' ) : __( 'Network Enable' ) )
			);
		}
	} else {
		$url = add_query_arg(
			array(
				'action' => 'disable',
				'theme'  => $theme_key,
				'paged'  => $page,
				's'      => $s,
			),
			$url
		);

		if ( $this->is_site_themes ) {
			/* translators: %s: Theme name. */
			$aria_label = sprintf( __( 'Disable %s' ), $theme->display( 'Name' ) );
		} else {
			/* translators: %s: Theme name. */
			$aria_label = sprintf( __( 'Network Disable %s' ), $theme->display( 'Name' ) );
		}

		$actions['disable'] = sprintf(
			'<a href="%s" aria-label="%s">%s</a>',
			esc_url( wp_nonce_url( $url, 'disable-theme_' . $stylesheet ) ),
			esc_attr( $aria_label ),
			( $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' ) )
		);
	}

	if ( ! $allowed && ! $this->is_site_themes
		&& current_user_can( 'delete_themes' )
		&& get_option( 'stylesheet' ) !== $stylesheet
		&& get_option( 'template' ) !== $stylesheet
	) {
		$url = add_query_arg(
			array(
				'action'       => 'delete-selected',
				'checked[]'    => $theme_key,
				'theme_status' => $context,
				'paged'        => $page,
				's'            => $s,
			),
			'themes.php'
		);

		/* translators: %s: Theme name. */
		$aria_label = sprintf( _x( 'Delete %s', 'theme' ), $theme->display( 'Name' ) );

		$actions['delete'] = sprintf(
			'<a href="%s" class="delete" aria-label="%s">%s</a>',
			esc_url( wp_nonce_url( $url, 'bulk-themes' ) ),
			esc_attr( $aria_label ),
			__( 'Delete' )
		);
	}
	/**
	 * Filters 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', and 'Delete'.
	 *
	 * The default action links for the Site themes list table include
	 * 'Enable', and 'Disable'.
	 *
	 * @since 2.8.0
	 *
	 * @param string[] $actions An array of action links.
	 * @param WP_Theme $theme   The current WP_Theme object.
	 * @param string   $context Status of the theme, one of 'all', 'enabled', or 'disabled'.
	 */
	$actions = apply_filters( 'theme_action_links', array_filter( $actions ), $theme, $context );

	/**
	 * Filters 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 string[] $actions An array of action links.
	 * @param WP_Theme $theme   The current WP_Theme object.
	 * @param string   $context Status of the theme, one of 'all', 'enabled', or 'disabled'.
	 */
	$actions = apply_filters( "theme_action_links_{$stylesheet}", $actions, $theme, $context );

	echo $this->row_actions( $actions, true );
}

Hooks

apply_filters( ‘theme_action_links’, string[] $actions, WP_Theme $theme, string $context )

Filters the action links displayed for each theme in the Multisite themes list table.

apply_filters( “theme_action_links_{$stylesheet}”, string[] $actions, WP_Theme $theme, string $context )

Filters the action links of a specific theme in the Multisite themes list table.

Changelog

VersionDescription
4.3.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.