get_theme_feature_list()WP 3.1.0

Retrieves list of WordPress theme features (aka theme tags).

Хуков нет.

Возвращает

Массив. Array of features keyed by category with translations keyed by slug.

Использование

get_theme_feature_list( $api );
$api(true|false)
Whether try to fetch tags from the WordPress.org API.
По умолчанию: true

Список изменений

С версии 3.1.0 Введена.
С версии 3.2.0 Added 'Gray' color and 'Featured Image Header', 'Featured Images', 'Full Width Template', and 'Post Formats' features.
С версии 3.5.0 Added 'Flexible Header' feature.
С версии 3.8.0 Renamed 'Width' filter to 'Layout'.
С версии 3.8.0 Renamed 'Fixed Width' and 'Flexible Width' options to 'Fixed Layout' and 'Fluid Layout'.
С версии 3.8.0 Added 'Accessibility Ready' feature and 'Responsive Layout' option.
С версии 3.9.0 Combined 'Layout' and 'Columns' filters.
С версии 4.6.0 Removed 'Colors' filter.
С версии 4.6.0 Added 'Grid Layout' option. Removed 'Fixed Layout', 'Fluid Layout', and 'Responsive Layout' options.
С версии 4.6.0 Added 'Custom Logo' and 'Footer Widgets' features. Removed 'Blavatar' feature.
С версии 4.6.0 Added 'Blog', 'E-Commerce', 'Education', 'Entertainment', 'Food & Drink', 'Holiday', 'News', 'Photography', and 'Portfolio' subjects. Removed 'Photoblogging' and 'Seasonal' subjects.
С версии 4.9.0 Reordered the filters from 'Layout', 'Features', 'Subject' to 'Subject', 'Features', 'Layout'.
С версии 4.9.0 Removed 'BuddyPress', 'Custom Menu', 'Flexible Header', 'Front Page Posting', 'Microformats', 'RTL Language Support', 'Threaded Comments', and 'Translation Ready' features.
С версии 5.5.0 Added 'Block Editor Patterns', 'Block Editor Styles', and 'Full Site Editing' features.
С версии 5.5.0 Added 'Wide Blocks' layout option.
С версии 5.8.1 Added 'Template Editing' feature.
С версии 6.1.1 Replaced 'Full Site Editing' feature name with 'Site Editor'.
С версии 6.2.0 Added 'Style Variations' feature.

Код get_theme_feature_list() WP 6.5.2

function get_theme_feature_list( $api = true ) {
	// Hard-coded list is used if API is not accessible.
	$features = array(

		__( 'Subject' )  => array(
			'blog'           => __( 'Blog' ),
			'e-commerce'     => __( 'E-Commerce' ),
			'education'      => __( 'Education' ),
			'entertainment'  => __( 'Entertainment' ),
			'food-and-drink' => __( 'Food & Drink' ),
			'holiday'        => __( 'Holiday' ),
			'news'           => __( 'News' ),
			'photography'    => __( 'Photography' ),
			'portfolio'      => __( 'Portfolio' ),
		),

		__( 'Features' ) => array(
			'accessibility-ready'   => __( 'Accessibility Ready' ),
			'block-patterns'        => __( 'Block Editor Patterns' ),
			'block-styles'          => __( 'Block Editor Styles' ),
			'custom-background'     => __( 'Custom Background' ),
			'custom-colors'         => __( 'Custom Colors' ),
			'custom-header'         => __( 'Custom Header' ),
			'custom-logo'           => __( 'Custom Logo' ),
			'editor-style'          => __( 'Editor Style' ),
			'featured-image-header' => __( 'Featured Image Header' ),
			'featured-images'       => __( 'Featured Images' ),
			'footer-widgets'        => __( 'Footer Widgets' ),
			'full-site-editing'     => __( 'Site Editor' ),
			'full-width-template'   => __( 'Full Width Template' ),
			'post-formats'          => __( 'Post Formats' ),
			'sticky-post'           => __( 'Sticky Post' ),
			'style-variations'      => __( 'Style Variations' ),
			'template-editing'      => __( 'Template Editing' ),
			'theme-options'         => __( 'Theme Options' ),
		),

		__( 'Layout' )   => array(
			'grid-layout'   => __( 'Grid Layout' ),
			'one-column'    => __( 'One Column' ),
			'two-columns'   => __( 'Two Columns' ),
			'three-columns' => __( 'Three Columns' ),
			'four-columns'  => __( 'Four Columns' ),
			'left-sidebar'  => __( 'Left Sidebar' ),
			'right-sidebar' => __( 'Right Sidebar' ),
			'wide-blocks'   => __( 'Wide Blocks' ),
		),

	);

	if ( ! $api || ! current_user_can( 'install_themes' ) ) {
		return $features;
	}

	$feature_list = get_site_transient( 'wporg_theme_feature_list' );
	if ( ! $feature_list ) {
		set_site_transient( 'wporg_theme_feature_list', array(), 3 * HOUR_IN_SECONDS );
	}

	if ( ! $feature_list ) {
		$feature_list = themes_api( 'feature_list', array() );
		if ( is_wp_error( $feature_list ) ) {
			return $features;
		}
	}

	if ( ! $feature_list ) {
		return $features;
	}

	set_site_transient( 'wporg_theme_feature_list', $feature_list, 3 * HOUR_IN_SECONDS );

	$category_translations = array(
		'Layout'   => __( 'Layout' ),
		'Features' => __( 'Features' ),
		'Subject'  => __( 'Subject' ),
	);

	$wporg_features = array();

	// Loop over the wp.org canonical list and apply translations.
	foreach ( (array) $feature_list as $feature_category => $feature_items ) {
		if ( isset( $category_translations[ $feature_category ] ) ) {
			$feature_category = $category_translations[ $feature_category ];
		}

		$wporg_features[ $feature_category ] = array();

		foreach ( $feature_items as $feature ) {
			if ( isset( $features[ $feature_category ][ $feature ] ) ) {
				$wporg_features[ $feature_category ][ $feature ] = $features[ $feature_category ][ $feature ];
			} else {
				$wporg_features[ $feature_category ][ $feature ] = $feature;
			}
		}
	}

	return $wporg_features;
}