PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.8.3
Jetpack – WP Security, Backup, Speed, & Growth v12.8.3
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / theme-tools / social-menu / icon-functions.php
jetpack / modules / theme-tools / social-menu Last commit date
icon-functions.php 2 years ago social-menu.css 2 years ago social-menu.svg 2 years ago
icon-functions.php
212 lines
1 <?php
2 /**
3 * SVG icons related functions and filters
4 *
5 * @package automattic/jetpack
6 */
7
8 if ( ! function_exists( 'jetpack_social_menu_include_svg_icons' ) ) :
9 /**
10 * Add SVG definitions to the footer.
11 */
12 function jetpack_social_menu_include_svg_icons() {
13 // Return early if Social Menu doesn't exist.
14 if ( ! has_nav_menu( 'jetpack-social-menu' ) ) {
15 return;
16 }
17 // Define SVG sprite file.
18 $svg_icons = __DIR__ . '/social-menu.svg';
19 // If it exists and we use the SVG menu type, include it.
20 if ( file_exists( $svg_icons ) && 'svg' === jetpack_social_menu_get_type() ) {
21 require_once $svg_icons;
22 }
23 }
24 add_action( 'wp_footer', 'jetpack_social_menu_include_svg_icons', 9999 );
25 endif;
26
27 if ( ! function_exists( 'jetpack_social_menu_get_svg' ) ) :
28 /**
29 * Return SVG markup.
30 *
31 * @param array $args {
32 * Parameters needed to display an SVG.
33 *
34 * @type string $icon Required SVG icon filename.
35 * }
36 * @return string SVG markup.
37 */
38 function jetpack_social_menu_get_svg( $args = array() ) {
39 // Make sure $args are an array.
40 if ( empty( $args ) ) {
41 return esc_html__( 'Please define default parameters in the form of an array.', 'jetpack' );
42 }
43
44 // Define an icon.
45 if ( false === array_key_exists( 'icon', $args ) ) {
46 return esc_html__( 'Please define an SVG icon filename.', 'jetpack' );
47 }
48
49 // Set defaults.
50 $defaults = array(
51 'icon' => '',
52 'fallback' => false,
53 );
54
55 // Parse args.
56 $args = wp_parse_args( $args, $defaults );
57
58 // Set aria hidden.
59 $aria_hidden = ' aria-hidden="true"';
60
61 // Begin SVG markup.
62 $svg = '<svg class="icon icon-' . esc_attr( $args['icon'] ) . '"' . $aria_hidden . ' role="img">';
63
64 /*
65 * Display the icon.
66 *
67 * The whitespace around `<use>` is intentional - it is a work around to a keyboard navigation bug in Safari 10.
68 *
69 * See https://core.trac.wordpress.org/ticket/38387.
70 */
71 $svg .= ' <use href="#icon-' . esc_html( $args['icon'] ) . '" xlink:href="#icon-' . esc_html( $args['icon'] ) . '"></use> ';
72
73 // Add some markup to use as a fallback for browsers that do not support SVGs.
74 if ( $args['fallback'] ) {
75 $svg .= '<span class="svg-fallback icon-' . esc_attr( $args['icon'] ) . '"></span>';
76 }
77
78 $svg .= '</svg>';
79
80 return $svg;
81 }
82 endif;
83
84 if ( ! function_exists( 'jetpack_social_menu_nav_menu_social_icons' ) ) :
85 /**
86 * Display SVG icons in social links menu.
87 *
88 * @param string $item_output The menu item output.
89 * @param WP_Post $item Menu item object.
90 * @param int $depth Depth of the menu.
91 * @param array $args wp_nav_menu() arguments.
92 * @return string $item_output The menu item output with social icon.
93 */
94 function jetpack_social_menu_nav_menu_social_icons( $item_output, $item, $depth, $args ) {
95 // Get supported social icons.
96 $social_icons = jetpack_social_menu_social_links_icons();
97
98 // Change SVG icon inside social links menu if there is supported URL.
99 if ( 'jetpack-social-menu' === $args->theme_location ) {
100 foreach ( $social_icons as $attr => $value ) {
101 /*
102 * attr can be a URL host, or a regex, starting with #.
103 * Let's check for both scenarios.
104 */
105 if (
106 // First Regex.
107 (
108 '#' === substr( $attr, 0, 1 ) && '#' === substr( $attr, -1 )
109 && preg_match( $attr, $item_output )
110 )
111 // Then, regular host name.
112 || false !== strpos( $item_output, $attr )
113 ) {
114 $item_output = str_replace(
115 $args->link_after,
116 '</span>' . jetpack_social_menu_get_svg( array( 'icon' => esc_attr( $value ) ) ),
117 $item_output
118 );
119 }
120 }
121 }
122
123 return $item_output;
124 }
125 add_filter( 'walker_nav_menu_start_el', 'jetpack_social_menu_nav_menu_social_icons', 10, 4 );
126 endif;
127
128 if ( ! function_exists( 'jetpack_social_menu_social_links_icons' ) ) :
129 /**
130 * Returns an array of supported social links (URL / regex and icon name).
131 * For regex, use the # delimiter.
132 *
133 * @return array $social_links_icons
134 */
135 function jetpack_social_menu_social_links_icons() {
136 // Supported social links icons.
137 $social_links_icons = array(
138 '#https?:\/\/(www\.)?amazon\.(com|cn|in|fr|de|it|nl|es|co|ca)\/#' => 'amazon',
139 '500px.com' => '500px',
140 'apple.com' => 'apple',
141 'itunes.com' => 'apple',
142 'bandcamp.com' => 'bandcamp',
143 'behance.net' => 'behance',
144 'blogger.com' => 'blogger',
145 'blogspot.com' => 'blogger',
146 'codepen.io' => 'codepen',
147 'deviantart.com' => 'deviantart',
148 'discord.gg' => 'discord',
149 'discordapp.com' => 'discord',
150 'digg.com' => 'digg',
151 'dribbble.com' => 'dribbble',
152 'dropbox.com' => 'dropbox',
153 'etsy.com' => 'etsy',
154 'eventbrite.com' => 'eventbrite',
155 'facebook.com' => 'facebook',
156 '/feed/' => 'feed',
157 'flickr.com' => 'flickr',
158 'foursquare.com' => 'foursquare',
159 'ghost.org' => 'ghost',
160 'goodreads.com' => 'goodreads',
161 'google.com' => 'google',
162 'github.com' => 'github',
163 'instagram.com' => 'instagram',
164 'linkedin.com' => 'linkedin',
165 'mailto:' => 'mail',
166 'meetup.com' => 'meetup',
167 'medium.com' => 'medium',
168 'nextdoor.com' => 'nextdoor',
169 'patreon.com' => 'patreon',
170 'pinterest.' => 'pinterest',
171 'getpocket.com' => 'pocket',
172 'ravelry.com' => 'ravelry',
173 'reddit.com' => 'reddit',
174 'skype.com' => 'skype',
175 'skype:' => 'skype',
176 'slideshare.net' => 'slideshare',
177 'snapchat.com' => 'snapchat',
178 'soundcloud.com' => 'soundcloud',
179 'spotify.com' => 'spotify',
180 'stackoverflow.com' => 'stackoverflow',
181 'strava.com' => 'strava',
182 'stumbleupon.com' => 'stumbleupon',
183 'telegram.me' => 'telegram',
184 'threads.net' => 'threads',
185 'tiktok.com' => 'tiktok',
186 'tumblr.com' => 'tumblr',
187 'twitch.tv' => 'twitch',
188 'twitter.com' => 'twitter',
189 'vimeo.com' => 'vimeo',
190 'vk.com' => 'vk',
191 'whatsapp.com' => 'whatsapp',
192 'woocommerce.com' => 'woocommerce',
193 'wordpress.org' => 'wordpress',
194 'wordpress.com' => 'wordpress',
195 'yelp.com' => 'yelp',
196 'x.com' => 'x',
197 'xanga.com' => 'xanga',
198 'youtube.com' => 'youtube',
199 );
200
201 /*
202 * Add Mastodon instances to this array.
203 */
204 $mastodon_instance_list = jetpack_mastodon_get_instance_list();
205 foreach ( $mastodon_instance_list as $instance ) {
206 $social_links_icons[ $instance ] = 'mastodon';
207 }
208
209 return $social_links_icons;
210 }
211 endif;
212