Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.79 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 (preg_match("~^(.*?<a.+?href=\")([^\"]*?)\">(.+?)</a>~s", $xml->li[$i]->asXML(), $title)
  34.             && $title[2] == "#")
  35.        
  36.         {
  37.             $xml->li[$i] = "</li><li class=\"heading\">" . $title[3];
  38.            
  39.             $xml->li[$i]->addAttribute('class', 'split');
  40.         }
  41.        
  42.         if ($xml->li[$i]->ul)
  43.         {          
  44.             $content = $xml->li[$i]->ul->asXML();
  45.  
  46.             if (preg_match("~^(.*?)\[(.*?)\]~", $title[3], $header))
  47.             {
  48.                 $title[3] = $header[1];
  49.                
  50.                 $content = preg_replace("~^<ul>~", "<ul><li class=\"h_title\">" . $header[2] . "</li>", trim($content));
  51.             }
  52.  
  53.             $xml->li[$i] = "<a class=\"open_m\" href=\"#\">" . $title[3] . "</a> <div class=\"drop_down_block drop-block\">" .
  54.             $content . "</div>";       
  55.            
  56.             $xml->li[$i]->addAttribute('class', 'item item-drop');
  57.         }
  58.     }
  59.    
  60.     $nav_menu = html_entity_decode($xml->asXML(), ENT_NOQUOTES, 'UTF-8');
  61.    
  62.     $nav_menu = preg_replace("~<[?]xml[^>]+>\s*~", "", $nav_menu);
  63.    
  64.     return $nav_menu;
  65. }
  66.  
  67. add_filter( 'wp_nav_menu', 'wp_nav_menu_aslwordpress', 10, 2 );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement