WP_Theme_Install_List_Table::single_row()publicWP 3.1.0

Prints a theme from the WordPress.org API.

Method of the class: WP_Theme_Install_List_Table{}

Hooks from the method

Return

null. Nothing (null).

Usage

$WP_Theme_Install_List_Table = new WP_Theme_Install_List_Table();
$WP_Theme_Install_List_Table->single_row( $theme );
$theme(stdClass) (required)

An object that contains theme data returned by the WordPress.org API.

  • name(string)
    Theme name, e.g. 'Twenty Twenty-One'.

  • slug(string)
    Theme slug, e.g. 'twentytwentyone'.

  • version(string)
    Theme version, e.g. '1.1'.

  • author(string)
    Theme author username, e.g. 'melchoyce'.

  • preview_url(string)
    Preview URL, e.g. 'https://2021.wordpress.net/'.

  • screenshot_url(string)
    Screenshot URL, e.g. 'https://wordpress.org/themes/twentytwentyone/'.

  • rating(float)
    Rating score.

  • num_ratings(int)
    The number of ratings.

  • homepage(string)
    Theme homepage, e.g. 'https://wordpress.org/themes/twentytwentyone/'.

  • description(string)
    Theme description.

  • download_link(string)
    Theme ZIP download URL.

Notes

  • Global. Array. $themes_allowedtags

Changelog

Since 3.1.0 Introduced.

WP_Theme_Install_List_Table::single_row() code WP 6.4.3

<?php
public function single_row( $theme ) {
	global $themes_allowedtags;

	if ( empty( $theme ) ) {
		return;
	}

	$name   = wp_kses( $theme->name, $themes_allowedtags );
	$author = wp_kses( $theme->author, $themes_allowedtags );

	/* translators: %s: Theme name. */
	$preview_title = sprintf( __( 'Preview &#8220;%s&#8221;' ), $name );
	$preview_url   = add_query_arg(
		array(
			'tab'   => 'theme-information',
			'theme' => $theme->slug,
		),
		self_admin_url( 'theme-install.php' )
	);

	$actions = array();

	$install_url = add_query_arg(
		array(
			'action' => 'install-theme',
			'theme'  => $theme->slug,
		),
		self_admin_url( 'update.php' )
	);

	$update_url = add_query_arg(
		array(
			'action' => 'upgrade-theme',
			'theme'  => $theme->slug,
		),
		self_admin_url( 'update.php' )
	);

	$status = $this->_get_theme_status( $theme );

	switch ( $status ) {
		case 'update_available':
			$actions[] = sprintf(
				'<a class="install-now" href="%s" title="%s">%s</a>',
				esc_url( wp_nonce_url( $update_url, 'upgrade-theme_' . $theme->slug ) ),
				/* translators: %s: Theme version. */
				esc_attr( sprintf( __( 'Update to version %s' ), $theme->version ) ),
				__( 'Update' )
			);
			break;
		case 'newer_installed':
		case 'latest_installed':
			$actions[] = sprintf(
				'<span class="install-now" title="%s">%s</span>',
				esc_attr__( 'This theme is already installed and is up to date' ),
				_x( 'Installed', 'theme' )
			);
			break;
		case 'install':
		default:
			$actions[] = sprintf(
				'<a class="install-now" href="%s" title="%s">%s</a>',
				esc_url( wp_nonce_url( $install_url, 'install-theme_' . $theme->slug ) ),
				/* translators: %s: Theme name. */
				esc_attr( sprintf( _x( 'Install %s', 'theme' ), $name ) ),
				__( 'Install Now' )
			);
			break;
	}

	$actions[] = sprintf(
		'<a class="install-theme-preview" href="%s" title="%s">%s</a>',
		esc_url( $preview_url ),
		/* translators: %s: Theme name. */
		esc_attr( sprintf( __( 'Preview %s' ), $name ) ),
		__( 'Preview' )
	);

	/**
	 * Filters the install action links for a theme in the Install Themes list table.
	 *
	 * @since 3.4.0
	 *
	 * @param string[] $actions An array of theme action links. Defaults are
	 *                          links to Install Now, Preview, and Details.
	 * @param stdClass $theme   An object that contains theme data returned by the
	 *                          WordPress.org API.
	 */
	$actions = apply_filters( 'theme_install_actions', $actions, $theme );

	?>
	<a class="screenshot install-theme-preview" href="<?php echo esc_url( $preview_url ); ?>" title="<?php echo esc_attr( $preview_title ); ?>">
		<img src="<?php echo esc_url( $theme->screenshot_url . '?ver=' . $theme->version ); ?>" width="150" alt="" />
	</a>

	<h3><?php echo $name; ?></h3>
	<div class="theme-author">
	<?php
		/* translators: %s: Theme author. */
		printf( __( 'By %s' ), $author );
	?>
	</div>

	<div class="action-links">
		<ul>
			<?php foreach ( $actions as $action ) : ?>
				<li><?php echo $action; ?></li>
			<?php endforeach; ?>
			<li class="hide-if-no-js"><a href="#" class="theme-detail"><?php _e( 'Details' ); ?></a></li>
		</ul>
	</div>

	<?php
	$this->install_theme_info( $theme );
}