• Видел несколько плагинов, которые отображают статистику заражения коронавирусом по странам. Интересует такой же, но по городам

Просмотр 15 ответов — с 16 по 30 (всего 58)
  • anonymized-14765447

    (@anonymized-14765447)

    Triptikon, а вы вообще в каком виде хотите отображать эти данные?

    exmi, да просто в виде виджета. что-то типа такого:

    Коронавирус в …

    За сутки:
    новых заболевших: 100
    выздоровевших: 10
    умерших: 5

    anonymized-14765447

    (@anonymized-14765447)

    Triptikon, для одного города, верно?

    Если делать виджет на примере этого API, то там нет ежедневной статистики для этого города, есть общее количество подтверждённых случаев заражения, кол-во скончавшихся и кол-во выздоровевших. Вам именно ежедневная статистика нужна?

    exmi, ну желательно ежедневная, но на крайняк можно и общую, главное чтоб менялась динамично и содержала точные данные

    anonymized-14765447

    (@anonymized-14765447)

    Triptikon, для РФ и Украины бесплатных API с ежедневной статистикой по городам я не видел, а вот как я выше написал (общее количество подтверждённых случаев заражения, кол-во скончавшихся и кол-во выздоровевших + дата обновлений базы) сделать можно.

    exmi, как?

    anonymized-14765447

    (@anonymized-14765447)

    Triptikon, самое простое — шорткодом. Создать свой шорткод, который будет забирать нужные данные по вашему городу, и этот шорткод выводить уже в нужном вам месте на сайте.

    exmi, а создать шорткод этот как?)

    anonymized-14765447

    (@anonymized-14765447)

    Triptikon, это немного кода на PHP 🙂

    я знаю только, что в functions.php нужно добавить add_shortcode, но как он должен выглядеть в целом без понятия)

    anonymized-14765447

    (@anonymized-14765447)

    Triptikon, жесть)

    Приблизительно так (вёрстку/стилизацию можете добавить сами в зависимости от дизайна сайта):

    function covid_mykolaiv_stats( $atts ){
    	$jsonmykolaiv = file_get_contents('https://www.trackcorona.live/api/cities/Mykolaiv');
    	$decodedobj = json_decode(utf8_encode($jsonmykolaiv));
    	
    	if (empty($decodedobj) || json_last_error() !== JSON_ERROR_NONE) {
    		return "API недоступен / Ошибка JSON";
    	} else {
    		echo "<div><h4>Статистика COVID-19 по г.Николаев</h4><p>Всего заражений: " . $decodedobj->data[0]->confirmed . "</p><p>Скончалось больных: " . $decodedobj->data[0]->dead . "</p><p>Выздоровевших: " . $decodedobj->data[0]->recovered . "</p><br />Данные обновлены: " . $decodedobj->data[0]->updated . "</div>";
    	}
    }
     
    add_shortcode( 'covid-mykolaiv', 'covid_mykolaiv_stats' );

    Шорткод [covid-mykolaiv] уже выводить в нужном месте на сайте, к примеру, вот так: <?php echo do_shortcode( '[covid-mykolaiv]' ); ?>

    С file_get_contents() могут возникнуть сложности, в зависимости от хостинга, так что ещё возможен вариант с cURL.

    Модератор Yui

    (@fierevere)

    永子

    не очень хороший вариант кода на продакшен.
    если это будет виджет для каждой страницы сайта — тем более.

    По запросу на внешний сайт при каждой генерации страницы… брр

    
    
    function covid_mykolaiv_stats( $atts ){
    
    $jsonmykolaiv = get_transient('mykolaivcoviddata');
    
    if (!$jsonmykolaiv) {
    	$jsonmykolaiv = file_get_contents('https://www.trackcorona.live/api/cities/Mykolaiv'); 
    set_transient('mykolaivcoviddata', $jsonmykolaiv, 7200);
    }
    
    	$decodedobj = json_decode(utf8_encode($jsonmykolaiv));
    	
    	if (empty($decodedobj) || json_last_error() !== JSON_ERROR_NONE) {
    		return "API недоступен / Ошибка JSON";
    	} else {
    		echo "<div><h4>Статистика COVID-19 по г.Николаев</h4><p>Всего заражений: " . $decodedobj->data[0]->confirmed . "</p><p>Скончалось больных: " . $decodedobj->data[0]->dead . "</p><p>Выздоровевших: " . $decodedobj->data[0]->recovered . "</p><br />Данные обновлены: " . $decodedobj->data[0]->updated . "</div>";
    	}
    }
     
    add_shortcode( 'covid-mykolaiv', 'covid_mykolaiv_stats' );
    
    

    как-то так.. чтобы не просить данные постоянно

    anonymized-14765447

    (@anonymized-14765447)

    Yui, это просто пример, так-то там допиливать можно много чего.

    exmi, fierevere, спасибо! Правда не могу понять как поменять формат даты где «Данные обновлены» на d.m.Y, H:i и понять как добавлять виджету с этим кодом фон)

    anonymized-14765447

    (@anonymized-14765447)

    Triptikon,

    Правда не могу понять как поменять формат даты где «Данные обновлены» на d.m.Y, H:i

    date('d.m.Y H:i', strtotime($decodedobj->data[0]->updated));

    как добавлять виджету с этим кодом фон

    <div>‘ы уже есть, вам осталось только задать им нужные стили (CSS).

Просмотр 15 ответов — с 16 по 30 (всего 58)
  • Тема «Есть плагин коронавируса по городам?» закрыта для новых ответов.