[ 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 array  $args   Not used.
  28       */
  29  	public function start_lvl( &$output, $depth = 0, $args = array() ) {}
  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 array  $args   Not used.
  41       */
  42  	public function end_lvl( &$output, $depth = 0, $args = array() ) {}
  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 object $item   Menu item data object.
  54       * @param int    $depth  Depth of menu item. Used for padding.
  55       * @param array  $args   Not used.
  56       * @param int    $id     Not used.
  57       */
  58  	public function start_el( &$output, $item, $depth = 0, $args = array(), $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_title ) ) {
  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                  <fieldset class="field-move hide-if-no-js description description-wide">
 231                      <span class="field-move-visual-label" aria-hidden="true"><?php _e( 'Move' ); ?></span>
 232                      <button type="button" class="button-link menus-move menus-move-up" data-dir="up"><?php _e( 'Up one' ); ?></button>
 233                      <button type="button" class="button-link menus-move menus-move-down" data-dir="down"><?php _e( 'Down one' ); ?></button>
 234                      <button type="button" class="button-link menus-move menus-move-left" data-dir="left"></button>
 235                      <button type="button" class="button-link menus-move menus-move-right" data-dir="right"></button>
 236                      <button type="button" class="button-link menus-move menus-move-top" data-dir="top"><?php _e( 'To the top' ); ?></button>
 237                  </fieldset>
 238  
 239                  <div class="menu-item-actions description-wide submitbox">
 240                      <?php if ( 'custom' !== $item->type && false !== $original_title ) : ?>
 241                          <p class="link-to-original">
 242                              <?php
 243                              /* translators: %s: Link to menu item's original object. */
 244                              printf( __( 'Original: %s' ), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' );
 245                              ?>
 246                          </p>
 247                      <?php endif; ?>
 248  
 249                      <?php
 250                      printf(
 251                          '<a class="item-delete submitdelete deletion" id="delete-%s" href="%s">%s</a>',
 252                          $item_id,
 253                          wp_nonce_url(
 254                              add_query_arg(
 255                                  array(
 256                                      'action'    => 'delete-menu-item',
 257                                      'menu-item' => $item_id,
 258                                  ),
 259                                  admin_url( 'nav-menus.php' )
 260                              ),
 261                              'delete-menu_item_' . $item_id
 262                          ),
 263                          __( 'Remove' )
 264                      );
 265                      ?>
 266                      <span class="meta-sep hide-if-no-js"> | </span>
 267                      <?php
 268                      printf(
 269                          '<a class="item-cancel submitcancel hide-if-no-js" id="cancel-%s" href="%s#menu-item-settings-%s">%s</a>',
 270                          $item_id,
 271                          esc_url(
 272                              add_query_arg(
 273                                  array(
 274                                      'edit-menu-item' => $item_id,
 275                                      'cancel'         => time(),
 276                                  ),
 277                                  admin_url( 'nav-menus.php' )
 278                              )
 279                          ),
 280                          $item_id,
 281                          __( 'Cancel' )
 282                      );
 283                      ?>
 284                  </div>
 285  
 286                  <input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo $item_id; ?>]" value="<?php echo $item_id; ?>" />
 287                  <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 ); ?>" />
 288                  <input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object ); ?>" />
 289                  <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 ); ?>" />
 290                  <input class="menu-item-data-position" type="hidden" name="menu-item-position[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_order ); ?>" />
 291                  <input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->type ); ?>" />
 292              </div><!-- .menu-item-settings-->
 293              <ul class="menu-item-transport"></ul>
 294          <?php
 295          $output .= ob_get_clean();
 296      }
 297  
 298  } // Walker_Nav_Menu_Edit


Generated: Sat Sep 21 01:00:03 2019 Cross-referenced by PHPXref 0.7.1