函数文档

wp_admin_bar_wp_menu()

💡 云策文档标注

概述

wp_admin_bar_wp_menu() 函数用于向 WordPress 管理工具栏添加 WordPress 徽标菜单,包含关于 WordPress、参与贡献等子菜单项。该函数根据用户权限和站点类型动态生成菜单链接。

关键要点

  • 函数接受一个必需的 WP_Admin_Bar 实例参数,用于操作管理工具栏。
  • 根据 current_user_can('read') 和 is_multisite() 条件,动态设置 about_url 和 contribute_url。
  • 使用 WP_Admin_Bar::add_node() 添加主菜单节点和多个子菜单节点,如关于、参与、WordPress.org、文档等。
  • 当 about_url 不可用时,设置 tabindex="0" 以确保子菜单可访问。
  • 函数内部调用了多个 WordPress 核心函数,如 self_admin_url()、get_dashboard_url() 和 __() 进行本地化。

代码示例

function wp_admin_bar_wp_menu( $wp_admin_bar ) {
    if ( current_user_can( 'read' ) ) {
        $about_url      = self_admin_url( 'about.php' );
        $contribute_url = self_admin_url( 'contribute.php' );
    } elseif ( is_multisite() ) {
        $about_url      = get_dashboard_url( get_current_user_id(), 'about.php' );
        $contribute_url = get_dashboard_url( get_current_user_id(), 'contribute.php' );
    } else {
        $about_url      = false;
        $contribute_url = false;
    }

    $wp_logo_menu_args = array(
        'id'    => 'wp-logo',
        'title' => '' .
                /* translators: Hidden accessibility text. */
                __( 'About WordPress' ) .
            '',
        'href'  => $about_url,
        'meta'  => array(
            'menu_title' => __( 'About WordPress' ),
        ),
    );

    if ( ! $about_url ) {
        $wp_logo_menu_args['meta'] = array(
            'tabindex' => 0,
        );
    }

    $wp_admin_bar->add_node( $wp_logo_menu_args );

    if ( $about_url ) {
        $wp_admin_bar->add_node(
            array(
                'parent' => 'wp-logo',
                'id'     => 'about',
                'title'  => __( 'About WordPress' ),
                'href'   => $about_url,
            )
        );
    }

    if ( $contribute_url ) {
        $wp_admin_bar->add_node(
            array(
                'parent' => 'wp-logo',
                'id'     => 'contribute',
                'title'  => __( 'Get Involved' ),
                'href'   => $contribute_url,
            )
        );
    }

    $wp_admin_bar->add_node(
        array(
            'parent' => 'wp-logo-external',
            'id'     => 'wporg',
            'title'  => __( 'WordPress.org' ),
            'href'   => __( 'https://wordpress.org/' ),
        )
    );

    $wp_admin_bar->add_node(
        array(
            'parent' => 'wp-logo-external',
            'id'     => 'documentation',
            'title'  => __( 'Documentation' ),
            'href'   => __( 'https://wordpress.org/documentation/' ),
        )
    );

    $wp_admin_bar->add_node(
        array(
            'parent' => 'wp-logo-external',
            'id'     => 'learn',
            'title'  => __( 'Learn WordPress' ),
            'href'   => __( 'https://learn.wordpress.org/' ),
        )
    );

    $wp_admin_bar->add_node(
        array(
            'parent' => 'wp-logo-external',
            'id'     => 'support-forums',
            'title'  => __( 'Support' ),
            'href'   => __( 'https://wordpress.org/support/forums/' ),
        )
    );

    $wp_admin_bar->add_node(
        array(
            'parent' => 'wp-logo-external',
            'id'     => 'feedback',
            'title'  => __( 'Feedback' ),
            'href'   => __( 'https://wordpress.org/support/forum/requests-and-feedback' ),
        )
    );
}

📄 原文内容

Adds the WordPress logo menu.

Parameters

$wp_admin_barWP_Admin_Barrequired
The WP_Admin_Bar instance.

Source

function wp_admin_bar_wp_menu( $wp_admin_bar ) {
	if ( current_user_can( 'read' ) ) {
		$about_url      = self_admin_url( 'about.php' );
		$contribute_url = self_admin_url( 'contribute.php' );
	} elseif ( is_multisite() ) {
		$about_url      = get_dashboard_url( get_current_user_id(), 'about.php' );
		$contribute_url = get_dashboard_url( get_current_user_id(), 'contribute.php' );
	} else {
		$about_url      = false;
		$contribute_url = false;
	}

	$wp_logo_menu_args = array(
		'id'    => 'wp-logo',
		'title' => '<span class="ab-icon" aria-hidden="true"></span><span class="screen-reader-text">' .
				/* translators: Hidden accessibility text. */
				__( 'About WordPress' ) .
			'</span>',
		'href'  => $about_url,
		'meta'  => array(
			'menu_title' => __( 'About WordPress' ),
		),
	);

	// Set tabindex="0" to make sub menus accessible when no URL is available.
	if ( ! $about_url ) {
		$wp_logo_menu_args['meta'] = array(
			'tabindex' => 0,
		);
	}

	$wp_admin_bar->add_node( $wp_logo_menu_args );

	if ( $about_url ) {
		// Add "About WordPress" link.
		$wp_admin_bar->add_node(
			array(
				'parent' => 'wp-logo',
				'id'     => 'about',
				'title'  => __( 'About WordPress' ),
				'href'   => $about_url,
			)
		);
	}

	if ( $contribute_url ) {
		// Add contribute link.
		$wp_admin_bar->add_node(
			array(
				'parent' => 'wp-logo',
				'id'     => 'contribute',
				'title'  => __( 'Get Involved' ),
				'href'   => $contribute_url,
			)
		);
	}

	// Add WordPress.org link.
	$wp_admin_bar->add_node(
		array(
			'parent' => 'wp-logo-external',
			'id'     => 'wporg',
			'title'  => __( 'WordPress.org' ),
			'href'   => __( 'https://wordpress.org/' ),
		)
	);

	// Add documentation link.
	$wp_admin_bar->add_node(
		array(
			'parent' => 'wp-logo-external',
			'id'     => 'documentation',
			'title'  => __( 'Documentation' ),
			'href'   => __( 'https://wordpress.org/documentation/' ),
		)
	);

	// Add learn link.
	$wp_admin_bar->add_node(
		array(
			'parent' => 'wp-logo-external',
			'id'     => 'learn',
			'title'  => __( 'Learn WordPress' ),
			'href'   => __( 'https://learn.wordpress.org/' ),
		)
	);

	// Add forums link.
	$wp_admin_bar->add_node(
		array(
			'parent' => 'wp-logo-external',
			'id'     => 'support-forums',
			'title'  => __( 'Support' ),
			'href'   => __( 'https://wordpress.org/support/forums/' ),
		)
	);

	// Add feedback link.
	$wp_admin_bar->add_node(
		array(
			'parent' => 'wp-logo-external',
			'id'     => 'feedback',
			'title'  => __( 'Feedback' ),
			'href'   => __( 'https://wordpress.org/support/forum/requests-and-feedback' ),
		)
	);
}

Changelog

Version Description
3.3.0 Introduced.