array with 'setting' and 'default' keys. */ public static function get_features(): array { $features = array( 'blocks' => array( 'setting' => 'enable_blocks', 'default' => true, ), 'feed' => array( 'setting' => 'enable_feed', 'default' => true, ), 'legacy_widgets' => array( 'setting' => 'enable_legacy_widgets', 'default' => true, ), 'query_block' => array( 'setting' => 'enable_query_block', 'default' => true, ), 'featured_image_block' => array( 'setting' => 'enable_featured_image_block', 'default' => true, ), 'popular_posts_pro_block' => array( 'setting' => 'enable_popular_posts_pro_block', 'default' => true, ), 'fast_tracker' => array( 'setting' => 'enable_fast_tracker', 'default' => true, ), 'pro_dashboard_widgets' => array( 'setting' => 'enable_pro_dashboard_widgets', 'default' => true, ), 'popular_authors' => array( 'setting' => 'enable_popular_authors', 'default' => true, ), 'page_builders' => array( 'setting' => 'enable_page_builders', 'default' => true, ), 'sitewide_tracking' => array( 'setting' => 'enable_sitewide_tracking', 'default' => true, ), 'daily_table_rollup' => array( 'setting' => 'enable_daily_table_rollup', 'default' => true, ), ); /** * Filter the map of toggleable features. * * @since 4.4.0 * * @param array $features Associative array of feature ID => array with 'setting' and 'default' keys. */ return apply_filters( 'tptn_features', $features ); } /** * Whether a feature is enabled. * * A feature is enabled when its setting is missing (default) or truthy. * Unknown feature IDs are treated as enabled. * * @since 4.4.0 * * @param string $feature Feature ID. * @return bool Whether the feature is enabled. */ public static function is_enabled( string $feature ): bool { $features = self::get_features(); if ( isset( $features[ $feature ] ) ) { $setting = $features[ $feature ]['setting']; $default = ! empty( $features[ $feature ]['default'] ); if ( null === self::$settings ) { $settings = get_option( 'tptn_settings' ); self::$settings = is_array( $settings ) ? $settings : array(); } $enabled = isset( self::$settings[ $setting ] ) ? ! empty( self::$settings[ $setting ] ) : $default; } else { $enabled = true; } /** * Filter whether a feature is enabled. * * @since 4.4.0 * * @param bool $enabled Whether the feature is enabled. * @param string $feature Feature ID. */ return (bool) apply_filters( 'tptn_feature_enabled', $enabled, $feature ); } }