Функция wp_text_diff()
используется для визуального отображения различий между двумя текстовыми строками в виде HTML-таблицы. Это удобный инструмент для сравнения старых и новых версий текста, например, при работе с ревизиями записей в WordPress.
wp_text_diff( string $left_string, string $right_string, string|array $args = null ): string
wp_text_diff()
создаёт таблицу, которая отображает различия между двумя строками: «старый» текст слева и «новый» текст справа. Удалённые части текста выделяются тегом <del>
, а добавленные — тегом <ins>
. Если между текстами нет различий, функция вернёт пустую строку.
Эта функция в основном используется для сравнения изменений в контенте и отображения этих изменений на страницах администратора WordPress, особенно при работе с ревизиями.
Параметры
- $left_string (string) (обязательный) — «Старый» текст (отображается в левой колонке).
- $right_string (string) (обязательный) — «Новый» текст (отображается в правой колонке).
- $args (string|array)(опциональный) — Ассоциативный массив аргументов для настройки отображения таблицы:
title
— Заголовок таблицы с различиями. По умолчанию — пусто.title_left
— Заголовок для левой колонки («старый» текст). По умолчанию — пусто.title_right
— Заголовок для правой колонки («новый» текст). По умолчанию — пусто.show_split_view
— Отображение в раздельном виде (две колонки) или в объединённом (одна колонка). По умолчанию — true.
Возвращаемое значение
- string — HTML код таблицы с различиями, если тексты различаются. Если различий нет, возвращается пустая строка.
Пример 1: Сравнение двух текстов
Этот пример демонстрирует, как отобразить различия между двумя строками:
$old_text = 'Это старый текст с некоторыми данными';
$new_text = 'Это новый текст с изменёнными данными';
$args = array(
'title' => 'Сравнение текстов',
'title_left' => 'Старая версия',
'title_right' => 'Новая версия',
);
echo wp_text_diff( $old_text, $new_text, $args );
Этот код создаст таблицу с заголовком «Сравнение текстов», где старый и новый текст будут отображены в отдельных колонках с указанием различий.
Результат:
<table class="diff">
<colgroup>
<col class="ltype">
<col class="content">
<col class="ltype">
<col class="content">
</colgroup>
<thead>
<tr class="diff-title">
<th colspan="4">Сравнение текстов</th>
</tr>
<tr class="diff-sub-title">
<td></td>
<th>Старая версия</th>
<td></td>
<th>Новая версия</th>
</tr>
</thead>
<tbody>
<tr>
<td>-</td>
<td class="diff-deletedline">Это <del>старый</del> текст с <del>некоторыми</del> данными</td>
<td>+</td>
<td class="diff-addedline">Это <ins>новый</ins> текст с <ins>изменёнными</ins> данными</td>
</tr>
</tbody>
</table>
Пример 2: Сравнение без заголовков колонок
Если вам не нужны заголовки для отдельных колонок, их можно пропустить, задав только общий заголовок:
$old_version = 'Оригинальный текст с важными данными.';
$new_version = 'Изменённый текст с актуальными данными.';
$args = array(
'title' => 'Различия между версиями',
);
echo wp_text_diff( $old_version, $new_version, $args );
В этом случае таблица будет отображать только различия, без заголовков для каждой колонки.
Пример 3: Отображение различий в одном столбце
Если вы хотите вывести изменения в одном столбце вместо двух, можно использовать параметр show_split_view
:
$version1 = 'Старый текст с информацией.';
$version2 = 'Новый текст с дополнительной информацией.';
$args = array(
'title' => 'Объединённое сравнение',
'show_split_view' => false,
);
echo wp_text_diff( $version1, $version2, $args );
Этот код выведет изменения в одном столбце, что может быть полезно при сравнении небольших текстов или комментариев.
Заключение
Функция wp_text_diff()
в WordPress — мощный инструмент для визуального отображения изменений между двумя версиями текста. Она особенно полезна при работе с ревизиями постов, когда необходимо показать различия между старыми и новыми версиями контента. Функция легко настраивается через аргументы, что позволяет контролировать внешний вид таблицы и способ отображения изменений.