74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php 
 | |
| 
 | |
| if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
 | |
| 
 | |
| if( ! class_exists('ACF_Walker_Nav_Menu_Edit') ) :
 | |
| 
 | |
| class ACF_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
 | |
| 
 | |
|     /**
 | |
|      * Starts the element output.
 | |
|      *
 | |
|      * Calls the Walker_Nav_Menu_Edit start_el function and then injects the custom field HTML  
 | |
|      *
 | |
| 	 * @since 5.0.0
 | |
| 	 * @since 5.7.2 Added preg_replace based on https://github.com/ineagu/wp-menu-item-custom-fields
 | |
|      *
 | |
|      * @param string   $output Used to append additional content (passed by reference).
 | |
|      * @param WP_Post  $item   Menu item data object.
 | |
|      * @param int      $depth  Depth of menu item. Used for padding.
 | |
|      * @param stdClass $args   An object of wp_nav_menu() arguments.
 | |
|      * @param int      $id     Current item ID.
 | |
|      */
 | |
| 	function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
 | |
| 		
 | |
| 		// vars
 | |
| 		$item_output = '';
 | |
| 		
 | |
| 		// call parent function
 | |
| 		parent::start_el( $item_output, $item, $depth, $args, $id );
 | |
| 		
 | |
| 		// inject custom field HTML
 | |
| 		$output .= preg_replace(
 | |
| 			// NOTE: Check this regex from time to time!
 | |
| 			'/(?=<(fieldset|p)[^>]+class="[^"]*field-move)/',
 | |
| 			$this->get_fields( $item, $depth, $args, $id ),
 | |
| 			$item_output
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 	/**
 | |
| 	 * Get custom fields HTML
 | |
| 	 *
 | |
| 	 * @since 5.0.0
 | |
| 	 * @since 5.7.2 Added action based on https://github.com/ineagu/wp-menu-item-custom-fields
 | |
| 	 *
 | |
| 	 * @param object $item   Menu item data object.
 | |
| 	 * @param int    $depth  Depth of menu item. Used for padding.
 | |
| 	 * @param array  $args   Menu item args.
 | |
| 	 * @param int    $id     Nav menu ID.
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	function get_fields( $item, $depth, $args = array(), $id = 0 ) {
 | |
| 		ob_start();
 | |
| 		
 | |
| 		/**
 | |
|          * Get menu item custom fields from plugins/themes
 | |
|          *
 | |
|          * @since 5.7.2
 | |
|          *
 | |
|          * @param int    $item_id	post ID of menu
 | |
|          * @param object $item		Menu item data object.
 | |
|          * @param int    $depth		Depth of menu item. Used for padding.
 | |
|          * @param array  $args		Menu item args.
 | |
|          * @param int    $id		Nav menu ID.
 | |
|          */
 | |
| 		do_action( 'wp_nav_menu_item_custom_fields', $item->ID, $item, $depth, $args, $id );
 | |
| 		return ob_get_clean();
 | |
| 	}		
 | |
| }
 | |
| 
 | |
| endif;
 | |
| 
 | |
| ?>
 |