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