wp_page_menu

函数


wp_page_menu ( $args = array() )
参数
  • (array|string)
    $args
    { Optional. Array or string of arguments to generate a page menu. See wp_list_pages() for additional arguments. @type string $sort_column How to sort the list of pages. Accepts post column names. Default ‘menu_order, post_title’. @type string $menu_id ID for the div containing the page list. Default is empty string. @type string $menu_class Class to use for the element containing the page list. Default ‘menu’. @type string $container Element to use for the element containing the page list. Default ‘div’. @type bool $echo Whether to echo the list or return it. Accepts true (echo) or false (return). Default true. @type int|bool|string $show_home Whether to display the link to the home page. Can just enter the text you’d like shown for the home link. 1|true defaults to ‘Home’. @type string $link_before The HTML or text to prepend to $show_home text. Default empty. @type string $link_after The HTML or text to append to $show_home text. Default empty. @type string $before The HTML or text to prepend to the menu. Default is ‘
      ‘. @type string $after The HTML or text to append to the menu. Default is ‘

    ‘. @type string $item_spacing Whether to preserve whitespace within the menu’s HTML. Accepts ‘preserve’ or ‘discard’. Default ‘discard’. @type Walker $walker Walker instance to use for listing pages. Default empty which results in a Walker_Page instance being used. }

    Required:
    Default: array()
返回值
  • (void|string) Void if ‘echo’ argument is true, HTML menu if ‘echo’ is false.
定义位置
  • wp-includes/post-template.php
    , line 1408
引入
2.7.0
弃用

显示或检索一个带有可选的主页链接的页面列表。

参数列举如下,部分参数是wp_list_pages()函数的参数。请查看该函数以了解更多关于这些参数的信息。

function wp_page_menu( $args = array() ) {
	$defaults = array(
		'sort_column'  => 'menu_order, post_title',
		'menu_id'      => '',
		'menu_class'   => 'menu',
		'container'    => 'div',
		'echo'         => true,
		'link_before'  => '',
		'link_after'   => '',
		'before'       => '
    ‘,
    ‘after’ => ‘

‘,
‘item_spacing’ => ‘discard’,
‘walker’ => ”,
);
$args = wp_parse_args( $args, $defaults );

if ( ! in_array( $args[‘item_spacing’], array( ‘preserve’, ‘discard’ ), true ) ) {
// Invalid value, fall back to default.
$args[‘item_spacing’] = $defaults[‘item_spacing’];
}

if ( ‘preserve’ === $args[‘item_spacing’] ) {
$t = “t”;
$n = “n”;
} else {
$t = ”;
$n = ”;
}

/**
* Filters the arguments used to generate a page-based menu.
*
* @since 2.7.0
*
* @see wp_page_menu()
*
* @param array $args An array of page menu arguments. See wp_page_menu()
* for information on accepted arguments.
*/
$args = apply_filters( ‘wp_page_menu_args’, $args );

$menu = ”;

$list_args = $args;

// Show Home in the menu.
if ( ! empty( $args[‘show_home’] ) ) {
if ( true === $args[‘show_home’] || ‘1’ === $args[‘show_home’] || 1 === $args[‘show_home’] ) {
$text = __( ‘Home’ );
} else {
$text = $args[‘show_home’];
}
$class = ”;
if ( is_front_page() && ! is_paged() ) {
$class = ‘class=”current_page_item”‘;
}
$menu .= ‘

  • ‘ . $args[‘link_before’] . $text . $args[‘link_after’] . ‘
  • ‘;
    // If the front page is a page, add it to the exclude list.
    if ( ‘page’ === get_option( ‘show_on_front’ ) ) {
    if ( ! empty( $list_args[‘exclude’] ) ) {
    $list_args[‘exclude’] .= ‘,’;
    } else {
    $list_args[‘exclude’] = ”;
    }
    $list_args[‘exclude’] .= get_option( ‘page_on_front’ );
    }
    }

    $list_args[‘echo’] = false;
    $list_args[‘title_li’] = ”;
    $menu .= wp_list_pages( $list_args );

    $container = sanitize_text_field( $args[‘container’] );

    // Fallback in case `wp_nav_menu()` was called without a container.
    if ( empty( $container ) ) {
    $container = ‘div’;
    }

    if ( $menu ) {

    // wp_nav_menu() doesn’t set before and after.
    if ( isset( $args[‘fallback_cb’] ) &&
    ‘wp_page_menu’ === $args[‘fallback_cb’] &&
    ‘ul’ !== $container ) {
    $args[‘before’] = “

      {$n}”;
      $args[‘after’] = ‘

    ‘;
    }

    $menu = $args[‘before’] . $menu . $args[‘after’];
    }

    $attrs = ”;
    if ( ! empty( $args[‘menu_id’] ) ) {
    $attrs .= ‘ id=”‘ . esc_attr( $args[‘menu_id’] ) . ‘”‘;
    }

    if ( ! empty( $args[‘menu_class’] ) ) {
    $attrs .= ‘ class=”‘ . esc_attr( $args[‘menu_class’] ) . ‘”‘;
    }

    $menu = “” . $menu . “{$container}>{$n}”;

    /**
    * Filters the HTML output of a page-based menu.
    *
    * @since 2.7.0
    *
    * @see wp_page_menu()
    *
    * @param string $menu The HTML output.
    * @param array $args An array of arguments. See wp_page_menu()
    * for information on accepted arguments.
    */
    $menu = apply_filters( ‘wp_page_menu’, $menu, $args );

    if ( $args[‘echo’] ) {
    echo $menu;
    } else {
    return $menu;
    }
    }