# wp_text_diff()

URL: https://chugunov.pro/api-wordpress/functions/wp_text_diff/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 2.6.0.

## Сигнатура

```php
wp_text_diff( string $left_string, string $right_string, string|array $args = null ): string
```

## Описание

Diff позволяет получить изменения между версиями. Результат — HTML, поэтому основное назначение — отображение изменений. Если обе строки одинаковы, возвращается пустая строка.
См. alsowp_parse_args(): используется для замены значений по умолчанию пользовательскими настройками.

## Параметры

- `$left_string` `string` — обязательный. «Старая» (левая) версия строки.
- `$right_string` `string` — обязательный. «Новая» (правая) версия строки.
- `$args` `string|array` — необязательный, по умолчанию `null`. Ассоциативный массив опций для передачи в WP_Text_Diff_Renderer_Table().
  
  title stringЗадаёт заголовок diff в формате, совместимом с выводом.
  
  title_left stringИзменяет HTML слева от заголовка.
  
  title_right stringИзменяет HTML справа от заголовка.
  
  show_split_view boolTrue для раздельного просмотра (два столбца), false для единого просмотра (один столбец). Значение по умолчанию — true.

## Возвращаемое значение

`string`

## Исходный код

Файл: `wp-includes/pluggable.php:3387`

```php
function wp_text_diff( $left_string, $right_string, $args = null ) {
	$defaults = array(
		'title'           => '',
		'title_left'      => '',
		'title_right'     => '',
		'show_split_view' => true,
	);
	$args     = wp_parse_args( $args, $defaults );

	if ( ! class_exists( 'WP_Text_Diff_Renderer_Table', false ) ) {
		require ABSPATH . WPINC . '/wp-diff.php';
	}

	$left_string  = normalize_whitespace( $left_string );
	$right_string = normalize_whitespace( $right_string );

	$left_lines  = explode( "\n", $left_string );
	$right_lines = explode( "\n", $right_string );
	$text_diff   = new Text_Diff( $left_lines, $right_lines );
	$renderer    = new WP_Text_Diff_Renderer_Table( $args );
	$diff        = $renderer->render( $text_diff );

	if ( ! $diff ) {
		return '';
	}

	$is_split_view       = ! empty( $args['show_split_view'] );
	$is_split_view_class = $is_split_view ? ' is-split-view' : '';

	$r = "<table class='diff$is_split_view_class'>\n";

	if ( $args['title'] ) {
		$r .= "<caption class='diff-title'>$args[title]</caption>\n";
	}

	if ( $args['title_left'] || $args['title_right'] ) {
		$r .= '<thead>';
	}

	if ( $args['title_left'] || $args['title_right'] ) {
		$th_or_td_left  = empty( $args['title_left'] ) ? 'td' : 'th';
		$th_or_td_right = empty( $args['title_right'] ) ? 'td' : 'th';

		$r .= "<tr class='diff-sub-title'>\n";
		$r .= "\t<$th_or_td_left>$args[title_left]</$th_or_td_left>\n";
		if ( $is_split_view ) {
			$r .= "\t<$th_or_td_right>$args[title_right]</$th_or_td_right>\n";
		}
		$r .= "</tr>\n";
	}

	if ( $args['title_left'] || $args['title_right'] ) {
		$r .= "</thead>\n";
	}

	$r .= "<tbody>\n$diff\n</tbody>\n";
	$r .= '</table>';

	return $r;
}
```

## История изменений

- 2.6.0 — Introduced.

## Связанные

Использует: [`normalize_whitespace`](https://chugunov.pro/api-wordpress/functions/normalize_whitespace/), `WP_Text_Diff_Renderer_Table::__construct`, [`wp_parse_args`](https://chugunov.pro/api-wordpress/functions/wp_parse_args/).
Используется в: [`wp_get_revision_ui_diff`](https://chugunov.pro/api-wordpress/functions/wp_get_revision_ui_diff/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/wp_text_diff/
