X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Удаление картинки только из первых 100 знаков поста
Aborigen
Aborigen
Topic Starter сообщение 25.12.2015, 19:00; Ответить: Aborigen
Сообщение #1


Участник
***

Группа: User
Сообщений: 146
Регистрация: 10.7.2013
Из: Ахтырка
Поблагодарили: 12 раз
Репутация:   3  


Доброго времени суток! После смены шаблона на WP сайте в начале каждого опубликованного ранее поста появились картинки (до этого они обрабатывались шаблоном как миниатюры). Чтобы исправить это, я прописал в functions.php следующий скрипт:
Развернуть/Свернуть
function deleteFirstImages($content) {
$content = preg_replace("/<img[^>]+\\>/i", "", $content, 1);
return $content;
}
add_filter ('the_content', 'deleteFirstImages');
Теперь удаляется любая первая картинка. Как можно поставить условие для удаления картинки, находящейся только в пределах первых 100 знаков? Заранее благодарен!

Сообщение отредактировал Aborigen - 25.12.2015, 19:02


--------------------
Качественный перевод статей и новостей для сайтов тематики IT, софт, игры, Android, Photoshop.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SpaceX
SpaceX
сообщение 25.12.2015, 20:00; Ответить: SpaceX
Сообщение #2


Участник
***

Группа: User
Сообщений: 205
Регистрация: 13.3.2011
Поблагодарили: 66 раз
Репутация:   18  


как вариант поставить проверку..

Код
$pos=STRPOS($content, "<img");
IF(($pos !== FALSE) AND ($pos <= 100)){
    ...
}


вот так правильно...

Сообщение отредактировал SpaceX - 25.12.2015, 20:05


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Aborigen
Aborigen
Topic Starter сообщение 26.12.2015, 13:42; Ответить: Aborigen
Сообщение #3


Участник
***

Группа: User
Сообщений: 146
Регистрация: 10.7.2013
Из: Ахтырка
Поблагодарили: 12 раз
Репутация:   3  


SpaceX, Я так понял, что нужно ставить мой код туда, где три точки? Но тогда код не работает.


--------------------
Качественный перевод статей и новостей для сайтов тематики IT, софт, игры, Android, Photoshop.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mmkulikov
mmkulikov
сообщение 26.12.2015, 14:18; Ответить: mmkulikov
Сообщение #4


Старожил
******

Группа: Active User
Сообщений: 2116
Регистрация: 21.9.2012
Из: СССР
Поблагодарили: 610 раз
Репутация:   70  


Код
function deleteFirstImages($content) {
$pos=STRPOS($content, "<img");
IF(($pos !== FALSE) AND ($pos <= 100)){
   $content = preg_replace("/<img[^>]+\\>/i", "", $content, 1);
}
return $content;
}
add_filter ('the_content', 'deleteFirstImages');

Где-то так. На синтаксические/грамматические ошибки не проверял :pardon:


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
IQ_Крым
IQ_Крым
сообщение 30.12.2015, 0:13; Ответить: IQ_Крым
Сообщение #5


Новичок
*

Группа: User
Сообщений: 48
Регистрация: 29.6.2015
Из: Крым
Поблагодарили: 6 раз
Репутация:   -2  


Я так понимаю, в переменной $content лежит ваш текст, из которого нужно убрать картинки? Но ведь первые 100 знаков включают в себя и html код? Если там html-кода будет очень много, то в первые 100 знаков могут войти всего несколько слов или даже ни одного. Я вижу тут только один алгоритм, у него есть минусы: он сложен и его выполнение программой будет занимать много времени. Описываю.
Можно написать цикл, который будет разделять текст контента на массив, содержащий html-части и текст. К примеру, у вас есть:
Код
<p>На днях <a href='//ru.ru/я'>я</a> посетил замечательный немецкий город. Делюсь впечатлениями:<img src='//ru.ru/img/1.png'></p>

в массив будет записываться:
Код
$arr = arrey(
1=> "<p>",
2=> "На днях ",
3=> "<a href='//ru.ru/я'>",
4=> "я",
5=> "</a>",
6=> " посетил замечательный немецкий город. Делюсь впечатлениями:",
7=> "<img src='//ru.ru/img/1.png'>",
8=> "</p>",
)

и т.д.
В процессе записи этого массива вы проверяете записываемый элемент. Когда попадается фрагмент текста, вы считаете кол-во символов и прибавляете его к переменной $num_characters. Если попадается html-фрагмент - удаляете из него все теги img перед записью в массив. При каждой итерации проверяете переменную $num_characters и когда её значение перейдёт за 100 - завершите цикл, загрузив всю оставшуюся необработанную часть кода в последний элемент массива. После этого снова собираете все элементы массива в одну переменную $content

Однако, я бы вам не рекомендовал использовать этот метод именно в шаблоне, он допустим разве что при записывании статей в БД. Можно попробовать другие методы решения, на front-end. Хотелось бы увидеть сам сайт, чтобы понять, с какой именно проблемой имеем дело.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Сообщение отредактировал IQ_Крым - 30.12.2015, 0:14
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыМануал по заработку в Яндекс Дзене «6 простых шагов — и 100 000 рублей в кармане»
В рамках Новогодних мероприятий 2017-2018
1404 Zoya83 91092 Сегодня, 18:54
автор: no_olegka_no
Открытая тема (нет новых ответов) Написание текстов - от 40р за 1к знаков
6 alexpes2000 338 Сегодня, 17:00
автор: phant
Открытая тема (нет новых ответов) Проект Internet.org от Facebook уже охватывает около 100 млн человек
4 MissContent 1303 Сегодня, 14:56
автор: wertu
Горячая тема (нет новых ответов) TrustMaster 3 - прогрев smtp серверов для 100% инбокса!
31 zennoboss 5928 Сегодня, 12:19
автор: zennoboss
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыМагазин уникальных статей из вебархива. 6р за 1000 знаков!
Статьи с уникальностью 90-100%
126 Oleg72 18790 Вчера, 17:25
автор: Oleg72


 



RSS Текстовая версия Сейчас: 21.5.2018, 19:33
Дизайн