Проблема с WP

12
W
На сайте с 11.11.2010
Offline
66
2495

Всем привет, помогите решить задачу!

У меня в шаблоне краткой новости стоит функция вывода первой картинки и из поста. Все как бы нормально работает до той поры пока первая и вторая картинка записаны в одну строчку в редакторе (притом не визуальном, а просто код) и в этом случае выводится вторая картинка, которая и ненужна!!! Я пытался разбивать тегами <p><br> но WP напрочь их игнорирует, хотя в полной новости отступы появляются, но стоит мне просто поставить курсор рядом с тегом <p> и нажать "Enter" как сразу начинает все работать как надо. Как с этим быть? Ручками редактировать не пишите, не вариант!!!

Sly32
На сайте с 29.03.2012
Offline
302
#1

Есть в WP такая замечательная штука как thumbnails - используйте ее для картинок в анонсах. Но в любом случае, грамотно написанный код не должен создавать проблемы, как у вас.

W
На сайте с 11.11.2010
Offline
66
#2

Забыл упомянуть, картинки все записаны на пикс хостинге, потому так наверное не получится.

jokerov
На сайте с 18.07.2008
Offline
102
#3
westnn:
Забыл упомянуть, картинки все записаны на пикс хостинге, потому так наверное не получится.

Покажите код функции, которая вытягивает первую картинку из контента. И часть контента(несколько абзацев), на котором функция работает не корректно. Можно в личку.

W
На сайте с 11.11.2010
Offline
66
#4

Всем спасибо, проблема решена!

В этой функции была ошибка, она исправлена

//Вывод первой картинки с поста

function get_post_image() {
global $post;
$first_img = '';
ob_start();
ob_end_clean();
$dom = new DOMDocument();
$dom->loadHTML($post->post_content);
$first_img = $dom->getElementsByTagName('img')->item(0)->getAttribute('src');
//Если на странице нет картинок, то ставим картинку по-умолчанию
if(empty($first_img)){
$img_dir = get_bloginfo('template_directory');
$first_img = $img_dir . '/images/post-default.jpg';
}
return $first_img;
}
SeVlad
На сайте с 03.11.2008
Offline
1609
#5
westnn:
В этой функции

О ужас. Парсить ДОМ, чтобы вывести физически существующий файл. Это вместо родных функций.

Воистину горе от ума.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
Seredniy
На сайте с 17.03.2008
Offline
251
#6

SeVlad, картинки на стороннем хостинге же. Как получить урл тут? А даже если и залито стандартными методами вп, но в последнюю очередь вставлено вверх статьи. Как получить урл?

Что-то типа:

<?php $image = preg_match('/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]*>/i', $post->post_content, $match ); ?>

Но в чем преимущество над парсингом ДОМ? Скорость работы?

Wordpress и другие CMS: правки, настройка, верстка и натяжка шаблонов, разработка сайтов "под ключ" (/ru/forum/1008050)
SeVlad
На сайте с 03.11.2008
Offline
1609
#7
Seredniy:
картинки на стороннем хостинге же. Как получить урл тут?

Да какая разница где физически расположены картинки. Для каждой из них есть запись в базе, а если даже нет (тогда это не превьха), то есть данные - урл.

(когда используются внешние превьхи они пишутся в произвольные поля. Получить эти данные - не проблема. Кроме того для внешних превьюх есть даже готовые плагины.)

Seredniy:
А даже если и залито стандартными методами вп, но в последнюю очередь вставлено вверх статьи. Как получить урл?

Ты ли это спрашиваешь? 😮

the_post_thumbnail_url. Но даже его получать может не нужно. the_post_thumbnail или др.

А если не превьхи, а из контента, то wp_get_attachment_image или подобной (при условии, что пикча привязана к посту)

Seredniy:
Но в чем преимущество над парсингом ДОМ? Скорость работы?

Тут я удивлён ещё больше. Сгенери страницу без нужных данных, отрендерь в браузере, распарси, потом получи данные и заново отрендерь.. Это вместо того, что бы сразу сделать правильно. Нда.. Мне такого не понять.

Seredniy
На сайте с 17.03.2008
Offline
251
#8

SeVlad, с этим то я согласен, но если вставлен тупо код картинки руками? Стандартными функциями никак же?

SeVlad
На сайте с 03.11.2008
Offline
1609
#9
Seredniy:
но если вставлен тупо код картинки руками? Стандартными функциями никак же?

Ну если вставлен - она и будет выводиться. Нафига ещё что-то?

Или в чём задача-то?

(Зы я чуток добавил в пред.пост)

Seredniy
На сайте с 17.03.2008
Offline
251
#10

SeVlad, мы немного о разном. Вот тебе код поста, который у ТСа (я так думаю).


Тут текст идет кокой-то, еще немножечко чего-то.
<img src="http://anothersite.ru/img/image.jpg">
Тут дальше еще текст пошел
...

Получается картинка тупо кодом вставлена, не используя механизм тумбнейлов и общей медиа-гелереи вообще.

А вот в лупе категории как выводится пост, чтобы было красиво и удобно:


...
<div class="post-title"><?php the_title(); ?></div>
<div class="post-image"><?php echo function_to_get_first_image(); ?></div>
...

Т.е. в базе нет данных о картинке ни как о вложении, ни даже в дополнительных полях. Вот ему и нужна функция function_to_get_first_image(); чтобы выдрать из тупо хтмл-кода картинку первую и выводить в нужном месте верстки.

Ну а по поводу парсинга ДОМ - библиотека же тоже парсит все регулярками, беря для работы кусок хтмл-код псодержимого поста.

Да, скорость ниже чем у обычной регулярки именно для 1 картинки, но не критично в банальных визитках, если уже функция кем-то создана ранее.

Я против того, чтобы делать как ТС. Это через жопу, но иногда и такое нужно

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий