Wordpress, шорткод получает старое значение после обновления страницы - PullRequest
0 голосов
/ 04 июня 2018

У меня есть шорткод, который печатает последние новости.

add_shortcode('latest_news', 'news_articles');

function news_articles($atts){

    $options = get_option('my_settings');

    var_dump(date('Y m d H:i:s', $options['last_update']));

    ob_start();

    if($options['articles'] != ''){
        include 'includes/list-shortcode.php';
    }

    $content = ob_get_clean();

    return $content;
}

Я хочу, чтобы последние новости обновлялись автоматически каждые x минут.Поэтому я создал файл js, который идет в голову после jquery с действием updateNews

jQuery(document).ready(function($){
    var data = {
        action: 'updateNews'
    };

    $.post(window.news.ajax_url, data, function (res) {}, 'json');

});

И само действие в файле php

add_action('wp_ajax_updateNews', 'updateNews_ajax');
add_action('wp_ajax_nopriv_updateNews', 'updateNews_ajax');
function updateNews_ajax(){

    $options = get_option('my_settings');
    $time_now = time();
    $time_diff = $time_now - $options['last_update'];

    if($time_diff > $options['update']){    // $options['update'] - update after x minutes
        $articles = get_results();

        $optionsNew['last_update'] = time();
        $optionsNew['articles'] = $articles;
        $optionsNew['update'] = $options['update'];

        update_option('my_settings', $optionsNew);
    }

    echo json_encode(['res'=>'ok']);
    wp_die();
}

Через x минут я обновляю страницу, и ничегоизменилось на странице.Только после двухкратного нажатия кнопки обновления информация обновляется на странице.После одного обновления показывается, что информация обновляется в БД, но шорткод все еще работает со старыми значениями.

1 Ответ

0 голосов
/ 04 июня 2018

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

update_option('my_settings', $optionsNew);

Поскольку в вашем коде есть ошибка ввода-вывода.

...