PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 14.4.2
Jetpack – WP Security, Backup, Speed, & Growth v14.4.2
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
239 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 _deprecated_function( __FUNCTION__, 'jetpack-13.7' );
14 // Return early if Social Menu doesn't exist.
15 if ( ! has_nav_menu( 'jetpack-social-menu' ) ) {
16 return;
17 }
18 // Define SVG sprite file.
19 $svg_icons = __DIR__ . '/social-menu.svg';
20 // If it exists and we use the SVG menu type, include it.
21 if ( file_exists( $svg_icons ) && 'svg' === jetpack_social_menu_get_type() ) {
22 $svg_contents = file_get_contents( $svg_icons ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents -- Only reading a local file.
23 }
24
25 if ( ! empty( $svg_contents ) ) {
26 $allowed_tags = array(
27 'svg' => array(
28 'style' => true,
29 'version' => true,
30 'xmlns' => true,
31 'xmlns:xlink' => true,
32 ),
33 'defs' => array(),
34 'symbol' => array(
35 'id' => true,
36 'viewbox' => true,
37 ),
38 'path' => array(
39 'd' => true,
40 'style' => true,
41 ),
42 );
43 echo wp_kses( $svg_contents, $allowed_tags );
44 }
45 }
46 add_action( 'wp_footer', 'jetpack_social_menu_include_svg_icons', 9999 );
47 }
48
49 if ( ! function_exists( 'jetpack_social_menu_get_svg' ) ) {
50 /**
51 * Return SVG markup.
52 *
53 * @param array $args {
54 * Parameters needed to display an SVG.
55 *
56 * @type string $icon Required SVG icon filename.
57 * }
58 * @return string SVG markup.
59 */
60 function jetpack_social_menu_get_svg( $args = array() ) {
61 _deprecated_function( __FUNCTION__, 'jetpack-13.7' );
62 // Make sure $args are an array.
63 if ( empty( $args ) ) {
64 return esc_html__( 'Please define default parameters in the form of an array.', 'jetpack' );
65 }
66
67 // Define an icon.
68 if ( false === array_key_exists( 'icon', $args ) ) {
69 return esc_html__( 'Please define an SVG icon filename.', 'jetpack' );
70 }
71
72 // Set defaults.
73 $defaults = array(
74 'icon' => '',
75 'fallback' => false,
76 );
77
78 // Parse args.
79 $args = wp_parse_args( $args, $defaults );
80
81 // Set aria hidden.
82 $aria_hidden = ' aria-hidden="true"';
83
84 // Begin SVG markup.
85 $svg = '<svg class="icon icon-' . esc_attr( $args['icon'] ) . '"' . $aria_hidden . ' role="img">';
86
87 /*
88 * Display the icon.
89 *
90 * The whitespace around `<use>` is intentional - it is a work around to a keyboard navigation bug in Safari 10.
91 *
92 * See https://core.trac.wordpress.org/ticket/38387.
93 */
94 $svg .= ' <use href="#icon-' . esc_html( $args['icon'] ) . '" xlink:href="#icon-' . esc_html( $args['icon'] ) . '"></use> ';
95
96 // Add some markup to use as a fallback for browsers that do not support SVGs.
97 if ( $args['fallback'] ) {
98 $svg .= '<span class="svg-fallback icon-' . esc_attr( $args['icon'] ) . '"></span>';
99 }
100
101 $svg .= '</svg>';
102
103 return $svg;
104 }
105 }
106
107 if ( ! function_exists( 'jetpack_social_menu_nav_menu_social_icons' ) ) {
108 /**
109 * Display SVG icons in social links menu.
110 *
111 * @param string $item_output The menu item output.
112 * @param WP_Post $item Menu item object.
113 * @param int $depth Depth of the menu.
114 * @param array $args wp_nav_menu() arguments.
115 * @return string $item_output The menu item output with social icon.
116 */
117 function jetpack_social_menu_nav_menu_social_icons( $item_output, $item, $depth, $args ) {
118 _deprecated_function( __FUNCTION__, 'jetpack-13.7' );
119 // Get supported social icons.
120 $social_icons = jetpack_social_menu_social_links_icons();
121
122 // Change SVG icon inside social links menu if there is supported URL.
123 if ( 'jetpack-social-menu' === $args->theme_location ) {
124 foreach ( $social_icons as $attr => $value ) {
125 /*
126 * attr can be a URL host, or a regex, starting with #.
127 * Let's check for both scenarios.
128 */
129 if (
130 // First Regex.
131 (
132 str_starts_with( $attr, '#' ) && str_ends_with( $attr, '#' )
133 && preg_match( $attr, $item_output )
134 )
135 // Then, regular host name.
136 || str_contains( $item_output, $attr )
137 ) {
138 $item_output = str_replace(
139 $args->link_after,
140 '</span>' . jetpack_social_menu_get_svg( array( 'icon' => esc_attr( $value ) ) ),
141 $item_output
142 );
143 }
144 }
145 }
146
147 return $item_output;
148 }
149 add_filter( 'walker_nav_menu_start_el', 'jetpack_social_menu_nav_menu_social_icons', 10, 4 );
150 }
151
152 if ( ! function_exists( 'jetpack_social_menu_social_links_icons' ) ) {
153 /**
154 * Returns an array of supported social links (URL / regex and icon name).
155 * For regex, use the # delimiter.
156 *
157 * @return array $social_links_icons
158 */
159 function jetpack_social_menu_social_links_icons() {
160 _deprecated_function( __FUNCTION__, 'jetpack-13.7' );
161 // Supported social links icons.
162 $social_links_icons = array(
163 '#https?:\/\/(www\.)?amazon\.(com|cn|in|fr|de|it|nl|es|co|ca)\/#' => 'amazon',
164 '500px.com' => '500px',
165 'apple.com' => 'apple',
166 'itunes.com' => 'apple',
167 'bandcamp.com' => 'bandcamp',
168 'behance.net' => 'behance',
169 'blogger.com' => 'blogger',
170 'blogspot.com' => 'blogger',
171 'bsky.app' => 'bluesky',
172 'codepen.io' => 'codepen',
173 'deviantart.com' => 'deviantart',
174 'discord.gg' => 'discord',
175 'discordapp.com' => 'discord',
176 'digg.com' => 'digg',
177 'dribbble.com' => 'dribbble',
178 'dropbox.com' => 'dropbox',
179 'etsy.com' => 'etsy',
180 'eventbrite.com' => 'eventbrite',
181 'facebook.com' => 'facebook',
182 '/feed/' => 'feed',
183 'flickr.com' => 'flickr',
184 'foursquare.com' => 'foursquare',
185 'ghost.org' => 'ghost',
186 'goodreads.com' => 'goodreads',
187 'google.com' => 'google',
188 'github.com' => 'github',
189 'instagram.com' => 'instagram',
190 'linkedin.com' => 'linkedin',
191 'mailto:' => 'mail',
192 'meetup.com' => 'meetup',
193 'medium.com' => 'medium',
194 'nextdoor.com' => 'nextdoor',
195 'patreon.com' => 'patreon',
196 'pinterest.' => 'pinterest',
197 'getpocket.com' => 'pocket',
198 'ravelry.com' => 'ravelry',
199 'reddit.com' => 'reddit',
200 'skype.com' => 'skype',
201 'skype:' => 'skype',
202 'slideshare.net' => 'slideshare',
203 'sms:' => 'sms',
204 'snapchat.com' => 'snapchat',
205 'soundcloud.com' => 'soundcloud',
206 'spotify.com' => 'spotify',
207 'stackoverflow.com' => 'stackoverflow',
208 'strava.com' => 'strava',
209 'stumbleupon.com' => 'stumbleupon',
210 'telegram.me' => 'telegram',
211 'threads.net' => 'threads',
212 'tiktok.com' => 'tiktok',
213 'tumblr.com' => 'tumblr',
214 'twitch.tv' => 'twitch',
215 'twitter.com' => 'twitter',
216 'vimeo.com' => 'vimeo',
217 'vk.com' => 'vk',
218 'whatsapp.com' => 'whatsapp',
219 'woocommerce.com' => 'woocommerce',
220 'wordpress.org' => 'wordpress',
221 'wordpress.com' => 'wordpress',
222 'yelp.com' => 'yelp',
223 'x.com' => 'x',
224 'xanga.com' => 'xanga',
225 'youtube.com' => 'youtube',
226 );
227
228 /*
229 * Add Mastodon instances to this array.
230 */
231 $mastodon_instance_list = jetpack_mastodon_get_instance_list();
232 foreach ( $mastodon_instance_list as $instance ) {
233 $social_links_icons[ $instance ] = 'mastodon';
234 }
235
236 return $social_links_icons;
237 }
238 }
239