Как удалить первые три слова из содержимого и отобразить отрывок

Вопрос или проблема

Привет, я создаю сайт для видеоигр. Я могу отобразить отрывок, укоротив его после следования некоторым советам. То, что я не могу сделать, так это удалить первые три слова из содержимого и затем отобразить это как отрывок. Например, если содержимое такое…

«содержимое начинается это отрывок», после удаления 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');

Как это работает

  1. Получение экстракта: Функция get_the_excerpt() получает текущий экстракт поста.

  2. Проверка на пустоту: Сначала функция проверяет, не пуст ли полученный текст. Если пустой, сразу возвращает пустую строку, что предотвращает дальнейшие ошибки.

  3. Разделение текста: Используя explode(' ', $text), текст разбивается на массив слов по пробелу.

  4. Удаление слов: С помощью array_splice($words, 0, 3) мы удаляем первые три слова из массива.

  5. Объединение: С помощью implode(' ', $words) объединяем оставшиеся слова обратно в строку.

  6. Возврат результата: Функция возвращает новый текст, который теперь не содержит первые три слова.

Шаг 2: Использование в вашем шаблоне

После добавления функции в functions.php, теперь вы можете использовать стандартную функцию the_excerpt() в вашем шаблоне, и она будет автоматически отображать сокращённый фрагмент без первых трёх слов.

Оптимизация

Этот метод может быть дополнительно оптимизирован, но уже сейчас он демонстрирует высокую производительность и простоту использования. В случае, если понадобится обрабатывать ещё более серьёзные случаи или требования, можно рассмотреть регулярные выражения, хотя в текущей задаче это не является необходимым.

Дополнительные рекомендации

  • Убедитесь, что ваш контент не содержит HTML-тегов, так как они могут нарушить форматирование. Если необходимо, добавьте функцию по удалению HTML-тегов, например, с помощью strip_tags().
  • Проведите тестирование на разных постах, чтобы убедиться в корректной работе функции в различных ситуациях.

Следуя этим шагам, вы сможете успешно интегрировать и настроить систему для удаления первых трёх слов из вашего контента для сайта видеоигр.

Оцените материал
Добавить комментарий

Капча загружается...