函数文档

wxr_term_meta()

💡 云策文档标注

概述

wxr_term_meta() 函数用于输出给定分类法术语对象的元数据 XML 标签,主要用于 WXR 导出功能。它从数据库中检索术语元数据,并通过过滤器允许选择性跳过某些元数据项。

关键要点

  • 函数接受一个 WP_Term 对象作为必需参数,用于指定要导出元数据的术语。
  • 通过 SQL 查询从 $wpdb->termmeta 表中获取指定 term_id 的所有元数据行。
  • 使用 apply_filters('wxr_export_skip_termmeta', false, $meta_key, $meta) 过滤器,允许开发者控制是否跳过特定元数据的导出。
  • 输出格式为 XML 标签,使用 wxr_cdata() 函数包装 meta_key 和 meta_value 以确保数据安全。
  • 该函数自 WordPress 4.6.0 版本引入,是 export_wp() 函数的一部分,用于生成 WXR 导出文件。

代码示例

function wxr_term_meta( $term ) {
    global $wpdb;

    $termmeta = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->termmeta WHERE term_id = %d", $term->term_id ) );

    foreach ( $termmeta as $meta ) {
        if ( ! apply_filters( 'wxr_export_skip_termmeta', false, $meta->meta_key, $meta ) ) {
            printf( "tt<wp:termmeta>nttt<wp:meta_key>%s</wp:meta_key>nttt<wp:meta_value>%s</wp:meta_value>ntt</wp:termmeta>n", wxr_cdata( $meta->meta_key ), wxr_cdata( $meta->meta_value ) );
        }
    }
}

注意事项

  • 确保传入的 $term 参数是有效的 WP_Term 对象,否则可能导致 SQL 查询错误或数据不完整。
  • 过滤器 wxr_export_skip_termmeta 可用于自定义导出逻辑,例如基于 meta_key 排除敏感数据。
  • 输出依赖于 wxr_cdata() 函数处理 XML 特殊字符,确保导出的 WXR 文件格式正确。

📄 原文内容

Outputs term meta XML tags for a given term object.

Parameters

$termWP_Termrequired
Term object.

Source

function wxr_term_meta( $term ) {
	global $wpdb;

	$termmeta = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->termmeta WHERE term_id = %d", $term->term_id ) );

	foreach ( $termmeta as $meta ) {
		/**
		 * Filters whether to selectively skip term meta used for WXR exports.
		 *
		 * Returning a truthy value from the filter will skip the current meta
		 * object from being exported.
		 *
		 * @since 4.6.0
		 *
		 * @param bool   $skip     Whether to skip the current piece of term meta. Default false.
		 * @param string $meta_key Current meta key.
		 * @param object $meta     Current meta object.
		 */
		if ( ! apply_filters( 'wxr_export_skip_termmeta', false, $meta->meta_key, $meta ) ) {
			printf( "tt<wp:termmeta>nttt<wp:meta_key>%s</wp:meta_key>nttt<wp:meta_value>%s</wp:meta_value>ntt</wp:termmeta>n", wxr_cdata( $meta->meta_key ), wxr_cdata( $meta->meta_value ) );
		}
	}
}

Hooks

apply_filters( ‘wxr_export_skip_termmeta’, bool $skip, string $meta_key, object $meta )

Filters whether to selectively skip term meta used for WXR exports.

Changelog

Version Description
4.6.0 Introduced.