函数文档

postbox_classes()

💡 云策文档标注

概述

postbox_classes() 函数用于返回元框(meta box)的 CSS 类名列表,基于元框 ID 和屏幕 ID 动态生成类名,并支持通过过滤器进行自定义。

关键要点

  • 函数接受两个必需参数:$box_id(元框 ID)和 $screen_id(屏幕 ID),返回以空格分隔的类名字符串。
  • 根据用户选项(如关闭状态)和 GET 参数动态生成类名数组,默认返回空类名。
  • 提供过滤器 postbox_classes_{$screen_id}_{$box_id},允许开发者修改特定屏幕和元框组合的类名。

代码示例

function postbox_classes( $box_id, $screen_id ) {
    if ( isset( $_GET['edit'] ) && $_GET['edit'] === $box_id ) {
        $classes = array( '' );
    } elseif ( get_user_option( 'closedpostboxes_' . $screen_id ) ) {
        $closed = get_user_option( 'closedpostboxes_' . $screen_id );
        if ( ! is_array( $closed ) ) {
            $classes = array( '' );
        } else {
            $classes = in_array( $box_id, $closed, true ) ? array( 'closed' ) : array( '' );
        }
    } else {
        $classes = array( '' );
    }

    $classes = apply_filters( "postbox_classes_{$screen_id}_{$box_id}", $classes );

    return implode( ' ', $classes );
}

注意事项

  • 函数内部逻辑依赖于用户选项和 GET 参数,确保在调用前相关数据已正确设置。
  • 过滤器名称是动态构建的,使用时需替换 $screen_id 和 $box_id 为实际值。

📄 原文内容

Returns the list of classes to be used by a meta box.

Parameters

$box_idstringrequired
Meta box ID (used in the 'id' attribute for the meta box).
$screen_idstringrequired
The screen on which the meta box is shown.

Return

string Space-separated string of class names.

Source

function postbox_classes( $box_id, $screen_id ) {
	if ( isset( $_GET['edit'] ) && $_GET['edit'] === $box_id ) {
		$classes = array( '' );
	} elseif ( get_user_option( 'closedpostboxes_' . $screen_id ) ) {
		$closed = get_user_option( 'closedpostboxes_' . $screen_id );
		if ( ! is_array( $closed ) ) {
			$classes = array( '' );
		} else {
			$classes = in_array( $box_id, $closed, true ) ? array( 'closed' ) : array( '' );
		}
	} else {
		$classes = array( '' );
	}

	/**
	 * Filters the postbox classes for a specific screen and box ID combo.
	 *
	 * The dynamic portions of the hook name, `$screen_id` and `$box_id`, refer to
	 * the screen ID and meta box ID, respectively.
	 *
	 * @since 3.2.0
	 *
	 * @param string[] $classes An array of postbox classes.
	 */
	$classes = apply_filters( "postbox_classes_{$screen_id}_{$box_id}", $classes );

	return implode( ' ', $classes );
}

Hooks

apply_filters( “postbox_classes_{$screen_id}_{$box_id}”, string[] $classes )

Filters the postbox classes for a specific screen and box ID combo.

Changelog

Version Description
2.5.0 Introduced.