函数文档

get_hidden_meta_boxes()

💡 云策文档标注

概述

get_hidden_meta_boxes() 函数用于获取指定屏幕中隐藏的元框ID数组。它根据用户设置或默认配置返回隐藏元框列表,并支持通过过滤器进行自定义。

关键要点

  • 参数 $screen 为必需,可以是字符串或 WP_Screen 对象,用于标识屏幕。
  • 返回值为字符串数组,表示隐藏元框的ID。
  • 函数首先检查用户选项,若无设置则使用默认隐藏列表,默认隐藏列表根据屏幕类型(如 post、page、attachment)有所不同。
  • 提供两个过滤器:default_hidden_meta_boxes 用于过滤默认隐藏列表,hidden_meta_boxes 用于过滤最终隐藏列表。

代码示例

function get_hidden_meta_boxes( $screen ) {
    if ( is_string( $screen ) ) {
        $screen = convert_to_screen( $screen );
    }

    $hidden = get_user_option( "metaboxhidden_{$screen->id}" );

    $use_defaults = ! is_array( $hidden );

    // Hide slug boxes by default.
    if ( $use_defaults ) {
        $hidden = array();

        if ( 'post' === $screen->base ) {
            if ( in_array( $screen->post_type, array( 'post', 'page', 'attachment' ), true ) ) {
                $hidden = array( 'slugdiv', 'trackbacksdiv', 'postcustom', 'postexcerpt', 'commentstatusdiv', 'commentsdiv', 'authordiv', 'revisionsdiv' );
            } else {
                $hidden = array( 'slugdiv' );
            }
        }

        $hidden = apply_filters( 'default_hidden_meta_boxes', $hidden, $screen );
    }

    return apply_filters( 'hidden_meta_boxes', $hidden, $screen, $use_defaults );
}

注意事项

  • 函数内部使用 convert_to_screen() 将字符串参数转换为 WP_Screen 对象。
  • 默认隐藏列表针对 post 类型屏幕有特定处理,其他类型可能不同。
  • 过滤器参数包括 $hidden(隐藏元框数组)、$screen(屏幕对象)和 $use_defaults(是否使用默认值)。

📄 原文内容

Gets an array of IDs of hidden meta boxes.

Parameters

$screenstring|WP_Screenrequired
Screen identifier

Return

string[] IDs of hidden meta boxes.

Source

function get_hidden_meta_boxes( $screen ) {
	if ( is_string( $screen ) ) {
		$screen = convert_to_screen( $screen );
	}

	$hidden = get_user_option( "metaboxhidden_{$screen->id}" );

	$use_defaults = ! is_array( $hidden );

	// Hide slug boxes by default.
	if ( $use_defaults ) {
		$hidden = array();

		if ( 'post' === $screen->base ) {
			if ( in_array( $screen->post_type, array( 'post', 'page', 'attachment' ), true ) ) {
				$hidden = array( 'slugdiv', 'trackbacksdiv', 'postcustom', 'postexcerpt', 'commentstatusdiv', 'commentsdiv', 'authordiv', 'revisionsdiv' );
			} else {
				$hidden = array( 'slugdiv' );
			}
		}

		/**
		 * Filters the default list of hidden meta boxes.
		 *
		 * @since 3.1.0
		 *
		 * @param string[]  $hidden An array of IDs of meta boxes hidden by default.
		 * @param WP_Screen $screen WP_Screen object of the current screen.
		 */
		$hidden = apply_filters( 'default_hidden_meta_boxes', $hidden, $screen );
	}

	/**
	 * Filters the list of hidden meta boxes.
	 *
	 * @since 3.3.0
	 *
	 * @param string[]  $hidden       An array of IDs of hidden meta boxes.
	 * @param WP_Screen $screen       WP_Screen object of the current screen.
	 * @param bool      $use_defaults Whether to show the default meta boxes.
	 *                                Default true.
	 */
	return apply_filters( 'hidden_meta_boxes', $hidden, $screen, $use_defaults );
}

Hooks

apply_filters( ‘default_hidden_meta_boxes’, string[] $hidden, WP_Screen $screen )

Filters the default list of hidden meta boxes.

apply_filters( ‘hidden_meta_boxes’, string[] $hidden, WP_Screen $screen, bool $use_defaults )

Filters the list of hidden meta boxes.

Changelog

Version Description
2.7.0 Introduced.