[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-admin/includes/ -> class-walker-nav-menu-edit.php (source)

   1  <?php
   2  /**
   3   * Navigation Menu API: Walker_Nav_Menu_Edit class
   4   *
   5   * @package WordPress
   6   * @subpackage Administration
   7   * @since 4.4.0
   8   */
   9  
  10  /**
  11   * Create HTML list of nav menu input items.
  12   *
  13   * @since 3.0.0
  14   *
  15   * @see Walker_Nav_Menu
  16   */
  17  class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {
  18      /**
  19       * Starts the list before the elements are added.
  20       *
  21       * @see Walker_Nav_Menu::start_lvl()
  22       *
  23       * @since 3.0.0
  24       *
  25       * @param string   $output Passed by reference.
  26       * @param int      $depth  Depth of menu item. Used for padding.
  27       * @param stdClass $args   Not used.
  28       */
  29  	public function start_lvl( &$output, $depth = 0, $args = null ) {}
  30  
  31      /**
  32       * Ends the list of after the elements are added.
  33       *
  34       * @see Walker_Nav_Menu::end_lvl()
  35       *
  36       * @since 3.0.0
  37       *
  38       * @param string   $output Passed by reference.
  39       * @param int      $depth  Depth of menu item. Used for padding.
  40       * @param stdClass $args   Not used.
  41       */
  42  	public function end_lvl( &$output, $depth = 0, $args = null ) {}
  43  
  44      /**
  45       * Start the element output.
  46       *
  47       * @see Walker_Nav_Menu::start_el()
  48       * @since 3.0.0
  49       *
  50       * @global int $_wp_nav_menu_max_depth
  51       *
  52       * @param string   $output Used to append additional content (passed by reference).
  53       * @param WP_Post  $item   Menu item data object.
  54       * @param int      $depth  Depth of menu item. Used for padding.
  55       * @param stdClass $args   Not used.
  56       * @param int      $id     Not used.
  57       */
  58  	public function start_el( &$output, $item, $depth = 0, $args = null, $id = 0 ) {
  59          global $_wp_nav_menu_max_depth;
  60          $_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth;
  61  
  62          ob_start();
  63          $item_id      = esc_attr( $item->ID );
  64          $removed_args = array(
  65              'action',
  66              'customlink-tab',
  67              'edit-menu-item',
  68              'menu-item',
  69              'page-tab',
  70              '_wpnonce',
  71          );
  72  
  73          $original_title = false;
  74  
  75          if ( 'taxonomy' === $item->type ) {
  76              $original_object = get_term( (int) $item->object_id, $item->object );
  77              if ( $original_object && ! is_wp_error( $original_object ) ) {
  78                  $original_title = $original_object->name;
  79              }
  80          } elseif ( 'post_type' === $item->type ) {
  81              $original_object = get_post( $item->object_id );
  82              if ( $original_object ) {
  83                  $original_title = get_the_title( $original_object->ID );
  84              }
  85          } elseif ( 'post_type_archive' === $item->type ) {
  86              $original_object = get_post_type_object( $item->object );
  87              if ( $original_object ) {
  88                  $original_title = $original_object->labels->archives;
  89              }
  90          }
  91  
  92          $classes = array(
  93              'menu-item menu-item-depth-' . $depth,
  94              'menu-item-' . esc_attr( $item->object ),
  95              'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive' ),
  96          );
  97  
  98          $title = $item->title;
  99  
 100          if ( ! empty( $item->_invalid ) ) {
 101              $classes[] = 'menu-item-invalid';
 102              /* translators: %s: Title of an invalid menu item. */
 103              $title = sprintf( __( '%s (Invalid)' ), $item->title );
 104          } elseif ( isset( $item->post_status ) && 'draft' === $item->post_status ) {
 105              $classes[] = 'pending';
 106              /* translators: %s: Title of a menu item in draft status. */
 107              $title = sprintf( __( '%s (Pending)' ), $item->title );
 108          }
 109  
 110          $title = ( ! isset( $item->label ) || '' === $item->label ) ? $title : $item->label;
 111  
 112          $submenu_text = '';
 113          if ( 0 == $depth ) {
 114              $submenu_text = 'style="display: none;"';
 115          }
 116  
 117          ?>
 118          <li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode( ' ', $classes ); ?>">
 119              <div class="menu-item-bar">
 120                  <div class="menu-item-handle">
 121                      <span class="item-title"><span class="menu-item-title"><?php echo esc_html( $title ); ?></span> <span class="is-submenu" <?php echo $submenu_text; ?>><?php _e( 'sub item' ); ?></span></span>
 122                      <span class="item-controls">
 123                          <span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
 124                          <span class="item-order hide-if-js">
 125                              <?php
 126                              printf(
 127                                  '<a href="%s" class="item-move-up" aria-label="%s">&#8593;</a>',
 128                                  wp_nonce_url(
 129                                      add_query_arg(
 130                                          array(
 131                                              'action'    => 'move-up-menu-item',
 132                                              'menu-item' => $item_id,
 133                                          ),
 134                                          remove_query_arg( $removed_args, admin_url( 'nav-menus.php' ) )
 135                                      ),
 136                                      'move-menu_item'
 137                                  ),
 138                                  esc_attr__( 'Move up' )
 139                              );
 140                              ?>
 141                              |
 142                              <?php
 143                              printf(
 144                                  '<a href="%s" class="item-move-down" aria-label="%s">&#8595;</a>',
 145                                  wp_nonce_url(
 146                                      add_query_arg(
 147                                          array(
 148                                              'action'    => 'move-down-menu-item',
 149                                              'menu-item' => $item_id,
 150                                          ),
 151                                          remove_query_arg( $removed_args, admin_url( 'nav-menus.php' ) )
 152                                      ),
 153                                      'move-menu_item'
 154                                  ),
 155                                  esc_attr__( 'Move down' )
 156                              );
 157                              ?>
 158                          </span>
 159                          <?php
 160                          if ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) {
 161                              $edit_url = admin_url( 'nav-menus.php' );
 162                          } else {
 163                              $edit_url = add_query_arg(
 164                                  array(
 165                                      'edit-menu-item' => $item_id,
 166                                  ),
 167                                  remove_query_arg( $removed_args, admin_url( 'nav-menus.php#menu-item-settings-' . $item_id ) )
 168                              );
 169                          }
 170  
 171                          printf(
 172                              '<a class="item-edit" id="edit-%s" href="%s" aria-label="%s"><span class="screen-reader-text">%s</span></a>',
 173                              $item_id,
 174                              $edit_url,
 175                              esc_attr__( 'Edit menu item' ),
 176                              __( 'Edit' )
 177                          );
 178                          ?>
 179                      </span>
 180                  </div>
 181              </div>
 182  
 183              <div class="menu-item-settings wp-clearfix" id="menu-item-settings-<?php echo $item_id; ?>">
 184                  <?php if ( 'custom' === $item->type ) : ?>
 185                      <p class="field-url description description-wide">
 186                          <label for="edit-menu-item-url-<?php echo $item_id; ?>">
 187                              <?php _e( 'URL' ); ?><br />
 188                              <input type="text" id="edit-menu-item-url-<?php echo $item_id; ?>" class="widefat code edit-menu-item-url" name="menu-item-url[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->url ); ?>" />
 189                          </label>
 190                      </p>
 191                  <?php endif; ?>
 192                  <p class="description description-wide">
 193                      <label for="edit-menu-item-title-<?php echo $item_id; ?>">
 194                          <?php _e( 'Navigation Label' ); ?><br />
 195                          <input type="text" id="edit-menu-item-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-title" name="menu-item-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->title ); ?>" />
 196                      </label>
 197                  </p>
 198                  <p class="field-title-attribute field-attr-title description description-wide">
 199                      <label for="edit-menu-item-attr-title-<?php echo $item_id; ?>">
 200                          <?php _e( 'Title Attribute' ); ?><br />
 201                          <input type="text" id="edit-menu-item-attr-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->post_excerpt ); ?>" />
 202                      </label>
 203                  </p>
 204                  <p class="field-link-target description">
 205                      <label for="edit-menu-item-target-<?php echo $item_id; ?>">
 206                          <input type="checkbox" id="edit-menu-item-target-<?php echo $item_id; ?>" value="_blank" name="menu-item-target[<?php echo $item_id; ?>]"<?php checked( $item->target, '_blank' ); ?> />
 207                          <?php _e( 'Open link in a new tab' ); ?>
 208                      </label>
 209                  </p>
 210                  <p class="field-css-classes description description-thin">
 211                      <label for="edit-menu-item-classes-<?php echo $item_id; ?>">
 212                          <?php _e( 'CSS Classes (optional)' ); ?><br />
 213                          <input type="text" id="edit-menu-item-classes-<?php echo $item_id; ?>" class="widefat code edit-menu-item-classes" name="menu-item-classes[<?php echo $item_id; ?>]" value="<?php echo esc_attr( implode( ' ', $item->classes ) ); ?>" />
 214                      </label>
 215                  </p>
 216                  <p class="field-xfn description description-thin">
 217                      <label for="edit-menu-item-xfn-<?php echo $item_id; ?>">
 218                          <?php _e( 'Link Relationship (XFN)' ); ?><br />
 219                          <input type="text" id="edit-menu-item-xfn-<?php echo $item_id; ?>" class="widefat code edit-menu-item-xfn" name="menu-item-xfn[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->xfn ); ?>" />
 220                      </label>
 221                  </p>
 222                  <p class="field-description description description-wide">
 223                      <label for="edit-menu-item-description-<?php echo $item_id; ?>">
 224                          <?php _e( 'Description' ); ?><br />
 225                          <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>
 226                          <span class="description"><?php _e( 'The description will be displayed in the menu if the current theme supports it.' ); ?></span>
 227                      </label>
 228                  </p>
 229  
 230                  <?php
 231                  /**
 232                   * Fires just before the move buttons of a nav menu item in the menu editor.
 233                   *
 234                   * @since 5.4.0
 235                   *
 236                   * @param int      $item_id Menu item ID.
 237                   * @param WP_Post  $item    Menu item data object.
 238                   * @param int      $depth   Depth of menu item. Used for padding.
 239                   * @param stdClass $args    An object of menu item arguments.
 240                   * @param int      $id      Nav menu ID.
 241                   */
 242                  do_action( 'wp_nav_menu_item_custom_fields', $item_id, $item, $depth, $args, $id );
 243                  ?>
 244  
 245                  <fieldset class="field-move hide-if-no-js description description-wide">
 246                      <span class="field-move-visual-label" aria-hidden="true"><?php _e( 'Move' ); ?></span>
 247                      <button type="button" class="button-link menus-move menus-move-up" data-dir="up"><?php _e( 'Up one' ); ?></button>
 248                      <button type="button" class="button-link menus-move menus-move-down" data-dir="down"><?php _e( 'Down one' ); ?></button>
 249                      <button type="button" class="button-link menus-move menus-move-left" data-dir="left"></button>
 250                      <button type="button" class="button-link menus-move menus-move-right" data-dir="right"></button>
 251                      <button type="button" class="button-link menus-move menus-move-top" data-dir="top"><?php _e( 'To the top' ); ?></button>
 252                  </fieldset>
 253  
 254                  <div class="menu-item-actions description-wide submitbox">
 255                      <?php if ( 'custom' !== $item->type && false !== $original_title ) : ?>
 256                          <p class="link-to-original">
 257                              <?php
 258                              /* translators: %s: Link to menu item's original object. */
 259                              printf( __( 'Original: %s' ), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' );
 260                              ?>
 261                          </p>
 262                      <?php endif; ?>
 263  
 264                      <?php
 265                      printf(
 266                          '<a class="item-delete submitdelete deletion" id="delete-%s" href="%s">%s</a>',
 267                          $item_id,
 268                          wp_nonce_url(
 269                              add_query_arg(
 270                                  array(
 271                                      'action'    => 'delete-menu-item',
 272                                      'menu-item' => $item_id,
 273                                  ),
 274                                  admin_url( 'nav-menus.php' )
 275                              ),
 276                              'delete-menu_item_' . $item_id
 277                          ),
 278                          __( 'Remove' )
 279                      );
 280                      ?>
 281                      <span class="meta-sep hide-if-no-js"> | </span>
 282                      <?php
 283                      printf(
 284                          '<a class="item-cancel submitcancel hide-if-no-js" id="cancel-%s" href="%s#menu-item-settings-%s">%s</a>',
 285                          $item_id,
 286                          esc_url(
 287                              add_query_arg(
 288                                  array(
 289                                      'edit-menu-item' => $item_id,
 290                                      'cancel'         => time(),
 291                                  ),
 292                                  admin_url( 'nav-menus.php' )
 293                              )
 294                          ),
 295                          $item_id,
 296                          __( 'Cancel' )
 297                      );
 298                      ?>
 299                  </div>
 300  
 301                  <input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo $item_id; ?>]" value="<?php echo $item_id; ?>" />
 302                  <input class="menu-item-data-object-id" type="hidden" name="menu-item-object-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object_id ); ?>" />
 303                  <input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object ); ?>" />
 304                  <input class="menu-item-data-parent-id" type="hidden" name="menu-item-parent-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_item_parent ); ?>" />
 305                  <input class="menu-item-data-position" type="hidden" name="menu-item-position[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_order ); ?>" />
 306                  <input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->type ); ?>" />
 307              </div><!-- .menu-item-settings-->
 308              <ul class="menu-item-transport"></ul>
 309          <?php
 310          $output .= ob_get_clean();
 311      }
 312  
 313  }


Generated: Fri Jul 3 01:00:03 2020 Cross-referenced by PHPXref 0.7.1