WordPress получает заголовок внешнего источника по URL.

Вопрос или проблема

Привет, я создаю новостной сайт. Я пытаюсь автоматизировать его.

  1. URL новостей (метабокс)
  2. Заголовок
  3. Область содержания
  4. Изображение (опция миниатюры на WordPress)

Когда я вставляю URL сайта, я хотел бы, чтобы другие метабоксы извлекали данные из источника http://www.bbc.co.uk/news/technology-34527439

Я хочу, чтобы заголовок и описание извлекались с сайта BBC.

  1. URL новостей: http://www.bbc.co.uk/news/technology-34527439
  2. Заголовок: должен извлекаться из <title>
  3. Область содержания: должна быть из <meta name="description".>
  4. Изображение: должно быть первым изображением в контенте

Я вижу, что вы можете использовать php cURL, любые дополнительные указания по WordPress будут весьма полезны http://www.php.net/manual/en/curl.examples-basic.php

Спасибо

Вот, пожалуйста:

class UrlToTitleConverter{

    public function convert($Url){
        $response = wp_remote_get($Url);
        if ( is_array( $response ) ) {
            $body = $response['body'];
            $title = substr($body, strpos($body, '<title>')+7);
            $title = substr($title, 0, strpos($title, '</title>'));
        }
        return $title;
    }
}

Попробуйте это

$tags    = get_meta_tags('http://www.bbc.com/news/technology-34527439');
$title   = $tags['twitter:title'];
$content = $tags['description'];
$image   = $tags['twitter:image:src'];

Если вам удобно использовать twitter:title и twitter:image:src. Вам также нужно будет проверить каждый источник, из которого вы пытаетесь извлечь данные, чтобы убедиться, что у них есть согласованная мета-схема. Если она отличается от сайта bbc.com, просто сделайте оператор switch по какому-то идентификатору для сайта, с которого вы извлекаете теги, чтобы построить массив данных.

Вывод по предоставленному URL.

 Array
(
    WordPress from url get external source title => Агентство национальной преступности Великобритании сообщает, что кибератакующие украли более £20 миллионов с английских банковских счетов.
    [x-country] => us
    [x-audience] => US
    [cps_audience] => US
    [cps_changequeueid] => 259204896
    [twitter:card] => summary_large_image
    [twitter:site] => @BBCWorld
    [twitter:title] => Онлайн-атака приведет к краже £20 миллионов с британских банковских счетов - BBC Новости
    [twitter:description] => Агентство национальной преступности Великобритании сообщает, что кибератакующие украли более £20 миллионов с английских банковских счетов.
    [twitter:creator] => @BBCWorld
    [twitter:image:src] => http://ichef.bbci.co.uk/news/560/cpsprodpb/37A1/production/_86114241_thinkstock.jpg
    [twitter:domain] => www.bbc.com
    [apple-mobile-web-app-title] => BBC Новости
    [application-name] => BBC Новости
    [msapplication-tileimage] => http://static.bbci.co.uk/news/1.91.0426/windows-eight-icon-144x144.png
    [msapplication-tilecolor] => #bb1919
    [mobile-web-app-capable] => yes
    [robots] => NOODP,NOYDIR
    [theme-color] => #bb1919
    [viewport] => width=device-width, initial-scale=1, user-scalable=1
)

К вашему сведению – у WordPress есть обертка для cURL, которая полезна

wp_remote_get( $url, $args );

https://codex.wordpress.org/Function_Reference/wp_remote_get

Ответ или решение

Как получить заголовок и содержимое из внешнего URL в WordPress

Создание новостного сайта требует автоматизации различных процессов, включая извлечение информации из внешних источников. В приведенном примере мы рассмотрим, как автоматически получать заголовок, описание и главное изображение из заданного URL новостной статьи. Для этого мы воспользуемся встроенными функциями WordPress и PHP без необходимости использования внешних библиотек.

Шаг 1: Использование wp_remote_get

WordPress предоставляет удобный метод wp_remote_get, который является оберткой для cURL. Это позволяет безопасно выполнять HTTP-запросы и получать данные из внешних источников.

$response = wp_remote_get($url);
if (is_wp_error($response)) {
    return; // Обработка ошибки
}
$body = wp_remote_retrieve_body($response);

Шаг 2: Извлечение заголовка

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

function get_title($body) {
    preg_match('/<title>(.*?)<\/title>/', $body, $matches);
    return $matches[1] ?? 'Заголовок не найден';
}

Шаг 3: Извлечение описания

Мета-тег description часто используется для предоставления короткой аннотации содержимого страницы. Это может быть выполнено следующим образом:

function get_description($body) {
    preg_match('/<meta name="description" content="(.*?)"/', $body, $matches);
    return $matches[1] ?? 'Описание не найдено';
}

Шаг 4: Извлечение первого изображения

Чтобы получить первое изображение из содержания, мы можем воспользоваться аналогичным подходом. Однако учтите, что структура HTML-кода может различаться на разных сайтах.

function get_first_image($body) {
    preg_match('/<img.*?src=["\'](.*?)["\']/i', $body, $matches);
    return $matches[1] ?? 'Изображение не найдено';
}

Шаг 5: Полная реализация

Ниже представлена полная функция, которая объединяет все вышеперечисленные шаги:

function fetch_article_data($url) {
    $response = wp_remote_get($url);
    if (is_wp_error($response)) {
        return; // Обработка ошибки
    }

    $body = wp_remote_retrieve_body($response);

    // Извлечение данных
    $title = get_title($body);
    $description = get_description($body);
    $image = get_first_image($body);

    // Возвращаем массив с данными
    return [
        'title' => $title,
        'description' => $description,
        'image' => $image,
    ];
}

Вывод

С помощью описанного подхода Вы можете автоматизировать процесс извлечения информации из новостных статей, занося необходимые данные в мета-боксы WordPress. Таким образом, это позволит значительно ускорить процесс обновления контента на Вашем сайте. Не забывайте проверять корректность заголовков, описаний и изображений, так как структура страниц разных сайтов может различаться. Хорошая практика — это добавить обработку ошибок и логирование для упрощения отладки в случае проблем.

Также стоит помнить о соблюдении авторских прав при использовании контента из других источников. Надеюсь, этот ответ был полезен и предоставил все необходимые инструменты для успешной автоматизации Вашего новостного сайта.

Оцените материал
Добавить комментарий

Капча загружается...