summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'themes/twentynineteen/inc/icon-functions.php')
-rw-r--r--themes/twentynineteen/inc/icon-functions.php52
1 files changed, 52 insertions, 0 deletions
diff --git a/themes/twentynineteen/inc/icon-functions.php b/themes/twentynineteen/inc/icon-functions.php
new file mode 100644
index 00000000..abd7c86b
--- /dev/null
+++ b/themes/twentynineteen/inc/icon-functions.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * SVG icons related functions
+ *
+ * @package WordPress
+ * @subpackage Twenty_Nineteen
+ * @since 1.0.0
+ */
+
+/**
+ * Gets the SVG code for a given icon.
+ */
+function twentynineteen_get_icon_svg( $icon, $size = 24 ) {
+ return TwentyNineteen_SVG_Icons::get_svg( 'ui', $icon, $size );
+}
+
+/**
+ * Gets the SVG code for a given social icon.
+ */
+function twentynineteen_get_social_icon_svg( $icon, $size = 24 ) {
+ return TwentyNineteen_SVG_Icons::get_svg( 'social', $icon, $size );
+}
+
+/**
+ * Detects the social network from a URL and returns the SVG code for its icon.
+ */
+function twentynineteen_get_social_link_svg( $uri, $size = 24 ) {
+ return TwentyNineteen_SVG_Icons::get_social_link_svg( $uri, $size );
+}
+
+/**
+ * Display SVG icons in social links menu.
+ *
+ * @param string $item_output The menu item output.
+ * @param WP_Post $item Menu item object.
+ * @param int $depth Depth of the menu.
+ * @param array $args wp_nav_menu() arguments.
+ * @return string $item_output The menu item output with social icon.
+ */
+function twentynineteen_nav_menu_social_icons( $item_output, $item, $depth, $args ) {
+ // Change SVG icon inside social links menu if there is supported URL.
+ if ( 'social' === $args->theme_location ) {
+ $svg = twentynineteen_get_social_link_svg( $item->url, 26 );
+ if ( empty( $svg ) ) {
+ $svg = twentynineteen_get_icon_svg( 'link' );
+ }
+ $item_output = str_replace( $args->link_after, '</span>' . $svg, $item_output );
+ }
+
+ return $item_output;
+}
+add_filter( 'walker_nav_menu_start_el', 'twentynineteen_nav_menu_social_icons', 10, 4 );