Нет описания

class-nav-menu-edit-custom-fields-deprecated.php 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. if ( ! class_exists( 'Walker_Nav_Menu_Edit' ) ) {
  3. /** Walker_Nav_Menu_Edit class */
  4. require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
  5. }
  6. /**
  7. * Custom Walker for Nav Menu Editor
  8. *
  9. * Add wp_nav_menu_item_custom_fields hook to the nav menu editor.
  10. *
  11. * Credits:
  12. * @helgatheviking - Initial concept which has made adding settings in the menu editor in a compatible way.
  13. * @kucrut - preg_replace() method so that we no longer have to translate core strings
  14. * @danieliser - refactor for less complexity between WP versions & updating versioned classes for proper backward compatibility with the new methods.
  15. *
  16. * @since WordPress 3.0.0
  17. * @uses Walker_Nav_Menu_Edit
  18. */
  19. class Walker_Nav_Menu_Edit_Custom_Fields extends Walker_Nav_Menu_Edit {
  20. /**
  21. * Start the element output.
  22. *
  23. * @see Walker_Nav_Menu_Edit::start_el()
  24. *
  25. * @param string $output Passed by reference. Used to append additional content.
  26. * @param object $item Menu item data object.
  27. * @param int $depth Depth of menu item.
  28. * @param array $args
  29. */
  30. public function start_el( &$output, $item, $depth = 0, $args = array() ) {
  31. $item_output = '';
  32. parent::start_el( $item_output, $item, $depth, $args );
  33. $output .= preg_replace( '/(<p[^>]+class="[^"]*field-description(?:.|\n)*?<\/p>)/', "$1 \r\n " . $this->get_custom_fields( $item, $depth, $args ), $item_output, 1 );
  34. }
  35. /**
  36. * Get custom fields
  37. *
  38. * @uses do_action() Calls 'menu_item_custom_fields' hook
  39. *
  40. * @param object $item Menu item data object.
  41. * @param int $depth Depth of menu item. Used for padding.
  42. * @param array $args Menu item args.
  43. *
  44. * @return string Additional fields or html for the nav menu editor.
  45. */
  46. protected function get_custom_fields( $item, $depth, $args = array() ) {
  47. ob_start();
  48. $item_id = intval( $item->ID );
  49. /**
  50. * Get menu item custom fields from plugins/themes
  51. *
  52. * @param int $item_id post ID of menu
  53. * @param object $item Menu item data object.
  54. * @param int $depth Depth of menu item. Used for padding.
  55. * @param array $args Menu item args.
  56. *
  57. * @return string Custom fields
  58. */
  59. do_action( 'wp_nav_menu_item_custom_fields', $item_id, $item, $depth, $args );
  60. return ob_get_clean();
  61. }
  62. }