Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.40 KB | None | 0 0
  1. function wp_nav_menu_aslwordpress( $nav_menu, $args ) {
  2.     $nav_menu = preg_replace("~\s+id=\".+?\"~", "", $nav_menu);
  3.  
  4.     $nav_menu = preg_replace_callback(
  5.         "~\s+class=\"(.+?)\".*?>[^<]*<([^\s]+)~s",
  6.         function ($class) {
  7.             if (in_array("current-menu-item", preg_split("~\s+~", $class[1])))
  8.             {
  9.                 return '><' . $class[2] . ' class="active"';
  10.             }
  11.             else
  12.             {
  13.                 return '><' . $class[2];
  14.             }
  15.         },
  16.         $nav_menu
  17.     );
  18.    
  19.     $nav_menu = preg_replace("~\s+aria-.+?\".+?\"~", "", $nav_menu);
  20.    
  21.     $nav_menu = preg_replace("~<button.+?/button>~", "", $nav_menu);
  22.  
  23.     do {
  24.         $tmp = $nav_menu;
  25.  
  26.         $nav_menu = preg_replace('#<([^ >]+)[^>]*>([[:space:]]|&nbsp;)*</\1>#', '', $nav_menu);
  27.     } while ( $nav_menu !== $tmp );
  28.    
  29.     $xml = simplexml_load_string($nav_menu);
  30.    
  31.     for ($i = 0; $i < count($xml->li); $i++)
  32.     {
  33.         if ($xml->li[$i]->ul)
  34.         {          
  35.             $content = $xml->li[$i]->ul->asXML();
  36.            
  37.             preg_match("~<a.+?>(.+?)</~s", $xml->li[$i]->asXML(), $title);
  38.  
  39.             $xml->li[$i] = "<a class=\"open_m\" href=\"#\">" . $title[1] . "</a> <div class=\"drop_down_block drop-block\">" .
  40.             $content . "</div>";       
  41.            
  42.             $xml->li[$i]->addAttribute('class', 'item item-drop');
  43.         }
  44.     }
  45.    
  46.     $nav_menu = html_entity_decode($xml->asXML(), ENT_NOQUOTES, 'UTF-8');
  47.    
  48.     $nav_menu = preg_replace("~<[?]xml[^>]+>\s*~", "", $nav_menu);
  49.    
  50.     return $nav_menu;
  51. }
  52.  
  53. add_filter( 'wp_nav_menu', 'wp_nav_menu_aslwordpress', 10, 2 );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement