Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как получить чистый пост с сайта на wordpress
Форумы портала PHP.SU » » CMS и фреймворки » Как получить чистый пост с сайта на wordpress

Страниц (1): [1]
 

1. rostik.vorobev - 19 Мая, 2016 - 23:33:59 - перейти к сообщению
Проблема вот в чем. Есть у меня сайт, есть у меня канал в телеграме, есть бот который раньше просто брал последний пост с сайта, получал его короткое описание, ссылку и название, постил это все дело в телеграм в канал.

Сейчас потребовалось сделать что бы он не просто анонсы кидал в канал а полные посты, и тут то и начались проблемы.
Дело в том что wordpress хранит посты html кодом, там всякие img, p, li, ul, strong, ... etc куча всего, там может быть кнопка или еще что. API методов получить чистый текст поста без картинок и прочего нет.

Я нахожусь в затруднении, с одной стороны я могу представить как использовать explode или регулярки для типичного поста, находить всякие теги, потом дробить пост на кусочки, вычленять ненужные куски, соединять. Но все не предусмотришь, иногда на сайт видео постится, иногда реклама прямо в странице. И потом скорость будет медленной. И опять же после того как я порежу пост на куски и соединю, нет никакой гарантии что где-то не потеряется перенос строки или пробелы, с маркированным списком вообще атас, в результате пост в телеграме будет не красивым.

Вопрос такой, был ли у кого опыт в подобном парсинге по сути? Как вы решили это?
Если то что я описал выше единственный вариант, то как мне лучше сделать все это что бы было лучше.
(Добавление)
https://forum[dot]antichat[dot]ru/threads/220733/ вот нагуглил как раз тот вариант что я предполагаю, но нужен ваш совет.
2. andrewkard - 20 Мая, 2016 - 14:51:24 - перейти к сообщению
Скорее всего что придется что то вырезать, а потом можно так:


а почему просто не вставить со всеми html тегами что там есть? Предварительно заменив пути к картинкам.
3. rostik.vorobev - 20 Мая, 2016 - 18:04:41 - перейти к сообщению
andrewkard пишет:
Скорее всего что придется что то вырезать, а потом можно так:


а почему просто не вставить со всеми html тегами что там есть? Предварительно заменив пути к картинкам.


Если я запощу в канал все как есть, то в канал придет просто текстом всё. Телеграм просто запостит весь html код как текст, например так будет: <p class="main">qweqwe</p><img src="123.jpg">.....<ul>.....</ul>.
4. rostik.vorobev - 23 Мая, 2016 - 18:35:11 - перейти к сообщению
Проблема решена. Нашел способ из wp вытащить текст без html и изображений.


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require_once('wp-load.php');
  3. $my_postid = 2289;//This is page id or post id
  4. $content_post = get_post($my_postid);
  5. $content = $content_post->post_content;
  6. echo wp_filter_nohtml_kses($content);
  7. ?>

(Добавление)
andrewkard пишет:
Скорее всего что придется что то вырезать, а потом можно так:


а почему просто не вставить со всеми html тегами что там есть? Предварительно заменив пути к картинкам.


Вариант с strip_tags тоже хорош, а то я уже было начал писать свою функцию по поиску тегов и вычленению их.

 

Powered by ExBB FM 1.0 RC1