Вопрос или проблема
Привет, я создаю сайт для видеоигр. Я могу отобразить отрывок, укоротив его после следования некоторым советам. То, что я не могу сделать, так это удалить первые три слова из содержимого и затем отобразить это как отрывок. Например, если содержимое такое…
«содержимое начинается это отрывок», после удаления HTML-тегов
Таким образом, the_excerpt() должен отображать только «это отрывок»
Я просто хочу удалить описание и инструкции из каждого отображения категории, для которой у меня есть пользовательский шаблон…
Вот быстрый способ сделать это, предполагая, что $excerpt
содержит ваш отрывок, из которого вы хотите удалить первые 3 слова
$excerpt = "содержимое начинается это отрывок";
$words = explode(' ', $excerpt);
array_shift($words); // 1-е слово
array_shift($words); // 2-е слово
array_shift($words); // 3-е слово
$excerpt = implode(' ', $words);
Это разбивает отрывок на массив слов на основе пробела ‘ ‘, сдвигает первые 3 слова из массива и снова объединяет его в строку.
Это не самый эффективный способ, но это должно работать:
function the_excerpt1($s="")
{
if($s !== '')
{
$a = explode(' ', $s);
array_shift($a);
array_shift($a);
array_shift($a);
$s = implode(' ', $a);
unset($a);
}
return $s;
}
echo the_excerpt1('содержимое начинается это отрывок');
Обновление – более эффективный способ
function the_excerpt2($s="")
{
if($s !== '')
{
$s = substr($s, (strpos($s, ' ')+1));
$s = substr($s, (strpos($s, ' ')+1));
$s = substr($s, (strpos($s, ' ')+1));
}
return $s;
}
echo the_excerpt2('содержимое начинается это отрывок');
the_excerpt2()
будет выполняться на 50-66% быстрее, чем the_excerpt1()
Следующее то, что вам нужно. Поместите это в файл functions.php, сделав соответствующие изменения.
function custom_excerpt() {
$text = get_the_excerpt(); // Присваивает отрывок переменной $text
$text = str_replace("Слово1_для_замены","", $text); // замена слова на пустую строку
$text = str_replace("Слово2_для_замены","", $text);
$text = str_replace("Слово3_для_замены","", $text);
return $text;
}
add_filter('the_excerpt', 'custom_excerpt');
Ответ или решение
Чтобы удалить первые три слова из контента и отобразить сокращённый фрагмент, воспользуйтесь следующей инструкцией. Мы реализуем это в виде функции для WordPress, что упростит интеграцию в ваш кастомный шаблон.
Шаг 1: Определение функции
Создайте новую функцию в файле functions.php
вашей темы. Эта функция будет обрабатывать текст, удаляя первые три слова, и возвращать результат.
Вот пример кода:
function custom_excerpt() {
// Получаем текст фрагмента
$text = get_the_excerpt();
// Проверяем, есть ли текст
if (!empty($text)) {
// Разбиваем текст на массив слов
$words = explode(' ', $text);
// Удаляем первые три слова
array_splice($words, 0, 3);
// Объединяем слова обратно в строку
$text = implode(' ', $words);
}
return $text;
}
// Добавляем функцию в фильтр для 'the_excerpt'
add_filter('the_excerpt', 'custom_excerpt');
Как это работает
-
Получение экстракта: Функция
get_the_excerpt()
получает текущий экстракт поста. -
Проверка на пустоту: Сначала функция проверяет, не пуст ли полученный текст. Если пустой, сразу возвращает пустую строку, что предотвращает дальнейшие ошибки.
-
Разделение текста: Используя
explode(' ', $text)
, текст разбивается на массив слов по пробелу. -
Удаление слов: С помощью
array_splice($words, 0, 3)
мы удаляем первые три слова из массива. -
Объединение: С помощью
implode(' ', $words)
объединяем оставшиеся слова обратно в строку. -
Возврат результата: Функция возвращает новый текст, который теперь не содержит первые три слова.
Шаг 2: Использование в вашем шаблоне
После добавления функции в functions.php
, теперь вы можете использовать стандартную функцию the_excerpt()
в вашем шаблоне, и она будет автоматически отображать сокращённый фрагмент без первых трёх слов.
Оптимизация
Этот метод может быть дополнительно оптимизирован, но уже сейчас он демонстрирует высокую производительность и простоту использования. В случае, если понадобится обрабатывать ещё более серьёзные случаи или требования, можно рассмотреть регулярные выражения, хотя в текущей задаче это не является необходимым.
Дополнительные рекомендации
- Убедитесь, что ваш контент не содержит HTML-тегов, так как они могут нарушить форматирование. Если необходимо, добавьте функцию по удалению HTML-тегов, например, с помощью
strip_tags()
. - Проведите тестирование на разных постах, чтобы убедиться в корректной работе функции в различных ситуациях.
Следуя этим шагам, вы сможете успешно интегрировать и настроить систему для удаления первых трёх слов из вашего контента для сайта видеоигр.