• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer
WordPress core a2z

WordPress core a2z

WordPress core only

  • Home
  • Plugins
  • Blocks
  • Shortcodes
  • APIs
  • Classes
  • Files
  • Hooks
  • Sitemap
  • Blog
Home / APIs / Walker_Page::start_el() – Outputs the beginning of the current element in the tree.

You appear to be a bot. Output may be restricted

Description

Outputs the beginning of the current element in the tree.

Usage

Walker_Page::start_el( $output, $page, $depth, $args, $current_page );

Parameters

$output
( string ) required – Used to append additional content. Passed by reference.
$page
( WP_Post ) required – Page data object.
$depth
( int ) optional – Optional. Depth of page. Used for padding. Default 0.
$args
( array ) optional – Optional. Array of arguments. Default empty array.
$current_page
( int ) optional – Optional. Page ID. Default 0.

Returns

void

Source

File name: wordpress/wp-includes/class-walker-page.php
Lines:

1 to 100 of 111
  public function start_el( &$output, $page, $depth = 0, $args = array(), $current_page = 0 ) {
    if ( isset( $args['item_spacing'] ) && 'preserve' === $args['item_spacing'] ) {
      $t = "\t";
      $n = "\n";
    } else {
      $t = '';
      $n = '';
    }
    if ( $depth ) {
      $indent = str_repeat( $t, $depth );
    } else {
      $indent = '';
    }

    $css_class = array( 'page_item', 'page-item-' . $page->ID );

    if ( isset( $args['pages_with_children'][ $page->ID ] ) ) {
      $css_class[] = 'page_item_has_children';
    }

    if ( ! empty( $current_page ) ) {
      $_current_page = get_post( $current_page );

      if ( $_current_page && in_array( $page->ID, $_current_page->ancestors, true ) ) {
        $css_class[] = 'current_page_ancestor';
      }

      if ( $page->ID == $current_page ) {
        $css_class[] = 'current_page_item';
      } elseif ( $_current_page && $page->ID === $_current_page->post_parent ) {
        $css_class[] = 'current_page_parent';
      }
    } elseif ( get_option( 'page_for_posts' ) == $page->ID ) {
      $css_class[] = 'current_page_parent';
    }

    
/**
 * Filters the list of CSS classes to include with each page item in the list.
 *
 * @since 2.8.0
 *
 * @see wp_list_pages()
 *
 * @param string[] $css_class    An array of CSS classes to be applied to each list item.
 * @param WP_Post  $page         Page data object.
 * @param int      $depth        Depth of page, used for padding.
 * @param array    $args         An array of arguments.
 * @param int      $current_page ID of the current page.
 */
    $css_classes = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page ) );
    $css_classes = $css_classes ? ' class="' . esc_attr( $css_classes ) . '"' : '';

    if ( '' === $page->post_title ) {
      /* translators: %d: ID of a post. */
      $page->post_title = sprintf( __( '#%d (no title)' ), $page->ID );
    }

    $args['link_before'] = empty( $args['link_before'] ) ? '' : $args['link_before'];
    $args['link_after']  = empty( $args['link_after'] ) ? '' : $args['link_after'];

    $atts                 = array();
    $atts['href']         = get_permalink( $page->ID );
    $atts['aria-current'] = ( $page->ID == $current_page ) ? 'page' : '';

    
/**
 * Filters the HTML attributes applied to a page menu item's anchor element.
 *
 * @since 4.8.0
 *
 * @param array $atts {
 *     The HTML attributes applied to the menu item's `<a>` element, empty strings are ignored.
 *
 *     @type string $href         The href attribute.
 *     @type string $aria_current The aria-current attribute.
 * }
 * @param WP_Post $page         Page data object.
 * @param int     $depth        Depth of page, used for padding.
 * @param array   $args         An array of arguments.
 * @param int     $current_page ID of the current page.
 */
    $atts = apply_filters( 'page_menu_link_attributes', $atts, $page, $depth, $args, $current_page );

    $attributes = '';
    foreach ( $atts as $attr => $value ) {
      if ( is_scalar( $value ) && '' !== $value && false !== $value ) {
        $value       = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
        $attributes .= ' ' . $attr . '="' . $value . '"';
      }
    }

    $output .= $indent . sprintf(
      '<li%s><a%s>%s%s%s</a>',
      $css_classes,
      $attributes,
      $args['link_before'],
      
/** This filter is documented in wp-includes/post-template.php */
      apply_filters( 'the_title', $page->post_title, $page->ID ),
      $args['link_after']
    );

 
[1] [2] Next »

 View on GitHub View on Trac

Published: 25th November 2019 | Last updated: 21st August 2020

Primary Sidebar

Information

Function name: Walker_Page::start_el
Class ref: Walker_Page
Plugin ref: WordPress
Version: 5.6
Sourcefile: wp-includes/class-walker-page.php
File ref: wp-includes/class-walker-page.php
Deprecated?: No
API Letters: E,P,S,W

Footer

WP-a2z
WordPress core a2z
WordPress core only
WordPress 5.6
WordPress a2z
WordPress core a2z
Genesis Theme Framework a2z
Jetpack a2z
WordPress develop tests
Easy Digital Downloads a2z
WooCommerce a2z
Yoast SEO a2z
WordPress Blocks

Site:  core.wp-a2z.org
© Copyright WP-a2z 2014-2021. All rights reserved.


Website designed and developed by Herb Miller
Proudly powered by WordPress and oik plugins

  • Home
  • Blog
  • Sitemap
  • Sites