WordPress.org

Make WordPress Core

#21898 closed enhancement (duplicate)

Custom Fields for Menu Items

Reported by: helgatheviking Owned by:
Milestone: Priority: normal
Severity: normal Version:
Component: Menus Keywords: has-patch
Focuses: Cc:

Description

I think plugin authors should be able to able to add custom fields to menu items. I'd like to set certain menu items as viewable only by certain roles. Currently this is possible, but only by duplicating the entire Walker_Nav_Menu_Edit walker. It'd be much easier if there was a hook inside the Walker instead.

For instance, in /wp-admin/includes/nav-menu.php

directly following:

<p class="field-description description description-wide">
	<label for="edit-menu-item-description-<?php echo $item_id; ?>">
		<?php _e( 'Description' ); ?><br />
		<textarea id="edit-menu-item-description-<?php echo $item_id; ?>" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description[<?php echo $item_id; ?>]"><?php echo esc_html( $item->description ); // textarea_escaped ?></textarea>
		<span class="description"><?php _e('The description will be displayed in the menu if the current theme supports it.'); ?></span>
	</label>
</p>

You could easily place:

<?php do_action( 'wp_nav_menu_custom_fields', $item, $depth, $args ); ?>

Since there are already hooks for wp_update_nav_menu_item and wp_setup_nav_menu_item it is already possible to save the save and to call it back when using it in the front-end Walker.

Attachments (1)

wp_nav_menu_custom_fields.patch (645 bytes) - added by mordauk 19 months ago.
Adds hook.

Download all attachments as: .zip

Change History (8)

comment:1 SergeyBiryukov19 months ago

  • Component changed from General to Menus
  • Version trunk deleted

comment:2 mordauk19 months ago

  • Cc pippin@… added

mordauk19 months ago

Adds hook.

comment:3 mindctrl19 months ago

  • Cc mindctrl added

comment:4 greenshady19 months ago

  • Cc justin@… added

comment:5 Chouby14 months ago

  • Cc frederic.demarle@… added

+1 for this hook. As mentionned above, we can derive a class from Walker_Nav_Menu_Edit and copy paste the whole start_el function. But that's a lot of duplicate code. As always in these cases, it is hard to maintain if the core code evolves. And what happens if two plugins do the same?

comment:6 Chouby14 months ago

  • Keywords has-patch added

Since there is already a patch proposed

comment:7 SergeyBiryukov14 months ago

  • Milestone Awaiting Review deleted
  • Resolution set to duplicate
  • Status changed from new to closed

Duplicate of #18584.

Note: See TracTickets for help on using tickets.