You appear to be a bot. Output may be restricted
Description
Detects the social network from a URL and returns the SVG code for its icon.
Usage
$string|null = Twenty_Twenty_One_SVG_Icons::get_social_link_svg( $uri, $size );
Parameters
- $uri
- ( string ) required – Social link.
- $size
- ( int ) required – The icon-size in pixels.
Returns
string|null
Source
File name: twentytwentyone/classes/class-twenty-twenty-one-svg-icons.php
Lines:
1 to 42 of 42
public static function get_social_link_svg( $uri, $size ) { static $regex_map; // Only compute regex map once, for performance. if ( ! isset( $regex_map ) ) { $regex_map = array(); /** * Filters Twenty Twenty-Ones's array of domain mappings for social icons. * * By default, each Icon ID is matched against a .com TLD. To override this behavior, * specify all the domains it covers (including the .com TLD too, if applicable). * * @since Twenty Twenty-One 1.0 * * @param array $social_icons_map Array of default social icons. */ $map = apply_filters( 'twenty_twenty_one_social_icons_map', self::$social_icons_map ); /** * Filters Twenty Twenty-One's array of social icons. * * @since Twenty Twenty-One 1.0 * * @param array $social_icons Array of default social icons. */ $social_icons = apply_filters( 'twenty_twenty_one_svg_icons_social', self::$social_icons ); foreach ( array_keys( $social_icons ) as $icon ) { $domains = array_key_exists( $icon, $map ) ? $map[ $icon ] : array( sprintf( '%s.com', $icon ) ); $domains = array_map( 'trim', $domains ); // Remove leading/trailing spaces, to prevent regex from failing to match. $domains = array_map( 'preg_quote', $domains ); $regex_map[ $icon ] = sprintf( '/(%s)/i', implode( '|', $domains ) ); } } foreach ( $regex_map as $icon => $regex ) { if ( preg_match( $regex, $uri ) ) { return self::get_svg( 'social', $icon, $size ) . '<span class="screen-reader-text">'; } } return null; }