phpwine/wpmenuwalker

For WordPress Custom Menu extending Walker with PHPWine

v1.4.1 2023-11-24 11:28 UTC

This package is auto-updated.

Last update: 2024-09-24 14:59:14 UTC


README

 /* Installation */
 composer require phpwine/wpmenuwalker v1.4.1

 /* required version *v2.0 */
 composer require phpwine/optimizedhtml v2.0
 <?php 
 
 // functions.php 
 if ( ! defined( 'WPINC' ) ) { die; }

 // file on the very top 
 use \PHPWineOptimizedHtml\OptimizedHtml;

 /** PHPWine **/
 require_once get_template_directory() . '/vendor/autoload.php';

 $wine = new OptimizedHtml;
 ...
  // Register custom navigation menu
  add_action( 'init', 'nielsoffice_nav_menus' );
  function nielsoffice_nav_menus() {

   $locations = array(
    'main-menu' => __( 'Primary menu', 'nielsoffice' )
   );
   register_nav_menus( $locations );
 }
// namespace
 use \PHPWineWPWalker\WineWPMenuWalker;

// init custom menu 
 wp_nav_menu( array(
   'theme_location'  => 'main-menu',
   'menu_id'         => 'primary-menu',

  'container' 	    => 'nav',
  'container_class' => 'menu-wine',   // %1$s
  'menu_class' 	    => 'wine', // %2$s .... %3$s = list items.
  'add_li_class'    => 'pwine',
  'items_wrap' 	    => '<ul class="p-wine %2$s" id="%1$s">%3$s</ul>',
  'walker' => new WineWPMenuWalker()
  )
);
<nav class="menu-wine">
    <ul class="p-wine wine" id="primary-menu">
        <li id="item_25" class="item-25"><a href="#" class="link-25">Home</a></li>
        <li id="item_24" class="course-title-class">
            <a href="#" class="link-24">Courses</a>
            <ul class="sub_menu"> <!-- first child -->
                <li id="item_27" class="item-27">
                    <a href="#" class="link-27">English</a>
                    <ul class="sub_menu t_child"> <!-- second child -->
                        <li id="item_26" class="item-26"><a href="#" class="link-26">Submit a bug</a></li>
                    </ul>
                </li>
                <li id="item_28" class="item-28"></li>
            </ul>
        </li>
        <li id="item_23" class="item-23"><a href="#" class="link-23">Showcase</a></li>
        <li id="item_22" class="item-22"><a href="#" class="link-22">Blog</a></li>
        <li id="item_21" class="item-21"><a href="#" class="link-21">Buy me coffee?</a></li>
    </ul>
</nav>
 // Hooks sub-menu child parent [ assigned to depth]
 function one_sub_menut_child( $depth, $args ) { /***/ }

 // Hooks Replace Content menu specific item link
 function Courses( $item, $depth, $args, $id ) { /***/ }

 // Hooks Replace Content menu specific item no-link
 function item_24Courses( $item, $depth, $args, $id ) { /***/ }
  
 // Hooks insert element top and bottom from item
 function top_Courses( $item, $depth, $args, $id ) { /***/ }
 function bottom_Courses( $item, $depth, $args, $id ) { /***/ }
// replace link || no-link
function item_27English() {
  return [
   child=> [ 
     [h1, value=>["Hello Wolrd"]]	
   ]	
 ];
}