12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?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;
|