Default Themes: Import Twenty Nineteen from the 5.0 branch.
Merges [43808,43821,43842,43860,43892,43904,43909,43926-43929,43956,43961-43963] from the 5.0 branch to trunk.
Props allancole, karmatosed, kjellr, yingling017, mrasharirfan, milana_cap, fabiankaegy, westonruter, jorbin, netweb, b-07, khleomix, audrasjb, nielslange, mmaumio, richsalvucci, littlebigthing, dimadin, joyously, anevins, peterwilsoncc, dannycooper, iCaleb, siriokun, technosiren, travel_girl, azchughtai, ianbelanger, nadim1992, ismailelkorchi, nativeinside, chetan200891, grapplerulrich, ocean90, joshfeck, frankew, AbdulWahab610, mendezcode, eliorivero, melchoyce, joen, laurelfulford, mdawaffe, kraftbj, dsmart, nao, mayukojpn, enodekciw, ketuchetan, atanasangelovdev, poena, sharaz, artisticasad, mukesh27, burhandodhy, crunnells, aprakasa, themeroots, imonly_ik, tlxo, youthkee, brentswisher, smyoon315, mrahmadawais, desideveloper, Kau-Boy, mor10, mikeyarce, dingo_bastard, xkon, twoabove.
Fixes #45424.
Built from https://develop.svn.wordpress.org/trunk@44149
git-svn-id: http://core.svn.wordpress.org/trunk@43979 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-14 03:33:41 +01:00
< ? php
/**
* SVG icons related functions
*
* @ package WordPress
* @ subpackage Twenty_Nineteen
2019-12-07 14:56:06 +01:00
* @ since Twenty Nineteen 1.0
Default Themes: Import Twenty Nineteen from the 5.0 branch.
Merges [43808,43821,43842,43860,43892,43904,43909,43926-43929,43956,43961-43963] from the 5.0 branch to trunk.
Props allancole, karmatosed, kjellr, yingling017, mrasharirfan, milana_cap, fabiankaegy, westonruter, jorbin, netweb, b-07, khleomix, audrasjb, nielslange, mmaumio, richsalvucci, littlebigthing, dimadin, joyously, anevins, peterwilsoncc, dannycooper, iCaleb, siriokun, technosiren, travel_girl, azchughtai, ianbelanger, nadim1992, ismailelkorchi, nativeinside, chetan200891, grapplerulrich, ocean90, joshfeck, frankew, AbdulWahab610, mendezcode, eliorivero, melchoyce, joen, laurelfulford, mdawaffe, kraftbj, dsmart, nao, mayukojpn, enodekciw, ketuchetan, atanasangelovdev, poena, sharaz, artisticasad, mukesh27, burhandodhy, crunnells, aprakasa, themeroots, imonly_ik, tlxo, youthkee, brentswisher, smyoon315, mrahmadawais, desideveloper, Kau-Boy, mor10, mikeyarce, dingo_bastard, xkon, twoabove.
Fixes #45424.
Built from https://develop.svn.wordpress.org/trunk@44149
git-svn-id: http://core.svn.wordpress.org/trunk@43979 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-14 03:33:41 +01:00
*/
/**
* 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 );
2020-02-08 14:01:06 +01:00
/**
* Add a dropdown icon to top - level menu items .
*
* @ param string $output Nav menu item start element .
* @ param object $item Nav menu item .
* @ param int $depth Depth .
* @ param object $args Nav menu args .
* @ return string Nav menu item start element .
* Add a dropdown icon to top - level menu items
*/
function twentynineteen_add_dropdown_icons ( $output , $item , $depth , $args ) {
// Only add class to 'top level' items on the 'primary' menu.
if ( ! isset ( $args -> theme_location ) || 'menu-1' !== $args -> theme_location ) {
return $output ;
}
if ( in_array ( 'mobile-parent-nav-menu-item' , $item -> classes , true ) && isset ( $item -> original_id ) ) {
// Inject the keyboard_arrow_left SVG inside the parent nav menu item, and let the item link to the parent item.
// @todo Only do this for nested submenus? If on a first-level submenu, then really the link could be "#" since the desire is to remove the target entirely.
$link = sprintf (
'<button class="menu-item-link-return" tabindex="-1">%s' ,
twentynineteen_get_icon_svg ( 'chevron_left' , 24 )
);
// Replace opening <a> with <button>.
$output = preg_replace (
'/<a\s.*?>/' ,
$link ,
$output ,
1 // Limit.
);
// Replace closing </a> with </button>.
$output = preg_replace (
'#</a>#i' ,
'</button>' ,
$output ,
1 // Limit.
);
} elseif ( in_array ( 'menu-item-has-children' , $item -> classes , true ) ) {
// Add SVG icon to parent items.
$icon = twentynineteen_get_icon_svg ( 'keyboard_arrow_down' , 24 );
$output .= sprintf (
'<button class="submenu-expand" tabindex="-1">%s</button>' ,
$icon
);
}
return $output ;
}
add_filter ( 'walker_nav_menu_start_el' , 'twentynineteen_add_dropdown_icons' , 10 , 4 );