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



 

Здравствуйте, гость (

| Вход | Регистрация )

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


Доброго времени суток! После смены шаблона на 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


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

Код
$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


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


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


Код
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:


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


Я так понимаю, в переменной $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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Как в пушсетках покупают по 100-200 тысяч кликов за день?
2 Boymaster 695 Вчера, 17:52
автор: Boymaster
Горячая тема (нет новых ответов) Adtrafico - Офферы из первых рук. CPA партнёрка от Команданте
440 Adtrafico 120655 23.4.2024, 16:41
автор: Adtrafico
Горячая тема (нет новых ответов) Incogniton - управляйте множеством браузерных профилей. 100% антидетект!
104 Incogniton 33334 21.4.2024, 19:19
автор: Incogniton
Горячая тема (нет новых ответов) Dao.AD: пуши, попсы и не только! ТОП монетизация и арбитраж. | Акция 100 % отчисления!
90 Daopush 27359 19.4.2024, 18:27
автор: Daopush
Открытая тема (нет новых ответов) Англоязычный SEO-копирайтинг от $3/100 слов от NeedmyLink | Первая статья бесплатно
4 Needmylink1 1346 12.4.2024, 23:43
автор: Needmylink1


 



RSS Текстовая версия Сейчас: 25.4.2024, 12:31
Дизайн