array( 'name' => 'Blog URL', 'exampleValue' => 'https://www.wpbeginner.com/', 'required' => true ) )); private function cleanContent($content){ $content = stripWithDelimiters($content, ''); $content = preg_replace('/
/', '', $content); return $content; } protected function parseItem($newItem){ $item = parent::parseItem($newItem); $article_html = getSimpleHTMLDOMCached($item['uri']); $article = null; switch(true) { // Custom fix for theme in https://jungefreiheit.de/politik/deutschland/2022/wahl-im-saarland/ case !is_null($article_html->find('div[data-widget_type="theme-post-content.default"]', 0)): $article = $article_html->find('div[data-widget_type="theme-post-content.default"]', 0); break; case !is_null($article_html->find('[itemprop=articleBody]', 0)): // highest priority content div $article = $article_html->find('[itemprop=articleBody]', 0); break; case !is_null($article_html->find('article', 0)): // most common content div $article = $article_html->find('article', 0); break; case !is_null($article_html->find('.single-content', 0)): // another common content div $article = $article_html->find('.single-content', 0); break; case !is_null($article_html->find('.post-content', 0)): // another common content div $article = $article_html->find('.post-content', 0); break; case !is_null($article_html->find('.post', 0)): // for old WordPress themes without HTML5 $article = $article_html->find('.post', 0); break; } foreach ($article->find('h1.entry-title') as $title) if ($title->plaintext == $item['title']) $title->outertext = ''; $article_image = $article_html->find('img.wp-post-image', 0); if(!empty($item['content']) && (!is_object($article_image) || empty($article_image->src))) { $article_image = str_get_html($item['content'])->find('img.wp-post-image', 0); } if(is_object($article_image) && !empty($article_image->src)) { if(empty($article_image->getAttribute('data-lazy-src'))) { $article_image = $article_image->src; } else { $article_image = $article_image->getAttribute('data-lazy-src'); } $mime_type = getMimeType($article_image); if (strpos($mime_type, 'image') === false) $article_image .= '#.image'; // force image if (empty($item['enclosures'])) $item['enclosures'] = array($article_image); else $item['enclosures'] = array_merge($item['enclosures'], $article_image); } if(!is_null($article)) { $item['content'] = $this->cleanContent($article->innertext); $item['content'] = defaultLinkTo($item['content'], $item['uri']); } return $item; } public function getURI(){ $url = $this->getInput('url'); if(empty($url)) { $url = parent::getURI(); } return $url; } public function collectData(){ if($this->getInput('url') && substr($this->getInput('url'), 0, strlen('http')) !== 'http') { // just in case someone find a way to access local files by playing with the url returnClientError('The url parameter must either refer to http or https protocol.'); } try{ $this->collectExpandableDatas($this->getURI() . '/feed/atom/', 20); } catch (Exception $e) { $this->collectExpandableDatas($this->getURI() . '/?feed=atom', 20); } } }