函数文档

_get_random_header_data()

💡 云策文档标注

概述

_get_random_header_data() 函数用于从主题注册的图片中获取随机头部图像数据。它根据主题设置(如 'random-uploaded-image' 或 'random-default-image')选择图片,并返回包含 URL 和缩略图 URL 的对象。

关键要点

  • 函数返回一个对象,包含随机头部图像的 URL 和缩略图 URL。
  • 通过 get_theme_mod() 检查主题设置,决定使用上传的图片还是默认图片。
  • 使用 array_rand() 从图片数组中随机选择一张图片。
  • URL 和缩略图 URL 通过 sprintf() 格式化,以包含模板和样式表目录 URI。
  • 如果未找到图片,函数返回一个空的 stdClass 对象。

代码示例

global $_wp_default_headers;
static $_wp_random_header = null;

if ( empty( $_wp_random_header ) ) {
    $header_image_mod = get_theme_mod( 'header_image', '' );
    $headers          = array();

    if ( 'random-uploaded-image' === $header_image_mod ) {
        $headers = get_uploaded_header_images();
    } elseif ( ! empty( $_wp_default_headers ) ) {
        if ( 'random-default-image' === $header_image_mod ) {
            $headers = $_wp_default_headers;
        } else {
            if ( current_theme_supports( 'custom-header', 'random-default' ) ) {
                $headers = $_wp_default_headers;
            }
        }
    }

    if ( empty( $headers ) ) {
        return new stdClass();
    }

    $_wp_random_header = (object) $headers[ array_rand( $headers ) ];

    $_wp_random_header->url = sprintf(
        $_wp_random_header->url,
        get_template_directory_uri(),
        get_stylesheet_directory_uri()
    );

    $_wp_random_header->thumbnail_url = sprintf(
        $_wp_random_header->thumbnail_url,
        get_template_directory_uri(),
        get_stylesheet_directory_uri()
    );
}

return $_wp_random_header;

注意事项

  • 函数使用静态变量 $_wp_random_header 缓存结果,以提高性能。
  • 确保主题支持 'custom-header' 功能,否则可能无法正确获取默认图片。
  • 相关函数包括 get_uploaded_header_images()、get_theme_mod() 等,用于辅助数据获取。

📄 原文内容

Gets random header image data from registered images in theme.

Return

object

Source

function _get_random_header_data() {
	global $_wp_default_headers;
	static $_wp_random_header = null;

	if ( empty( $_wp_random_header ) ) {
		$header_image_mod = get_theme_mod( 'header_image', '' );
		$headers          = array();

		if ( 'random-uploaded-image' === $header_image_mod ) {
			$headers = get_uploaded_header_images();
		} elseif ( ! empty( $_wp_default_headers ) ) {
			if ( 'random-default-image' === $header_image_mod ) {
				$headers = $_wp_default_headers;
			} else {
				if ( current_theme_supports( 'custom-header', 'random-default' ) ) {
					$headers = $_wp_default_headers;
				}
			}
		}

		if ( empty( $headers ) ) {
			return new stdClass();
		}

		$_wp_random_header = (object) $headers[ array_rand( $headers ) ];

		$_wp_random_header->url = sprintf(
			$_wp_random_header->url,
			get_template_directory_uri(),
			get_stylesheet_directory_uri()
		);

		$_wp_random_header->thumbnail_url = sprintf(
			$_wp_random_header->thumbnail_url,
			get_template_directory_uri(),
			get_stylesheet_directory_uri()
		);
	}

	return $_wp_random_header;
}

Changelog

Version Description
3.4.0 Introduced.