Есть ли способ кэширования таким образом, чтобы не создавалась еще большая нагрузка?Собственно кэширование есть способ сэкономить на медленных запросах. Как я понимаю в вопросах работы алгоритмов вы не в зуб ногой, больше по настройке формочек в вордпрессе... Кэш создается 1 раз, и используется для всех дальнейших запросов как готовый ответ от бд, на определенный срок. Для этого во многих инструментах кэширования есть штатные методы отслеживания интервала хранения конкретного значения.
function load_scripts() {
if (!is_admin()) {
wp_deregister_script('jquery');
wp_enqueue_script('jquery', '//code.jquery.com/jquery-3.4.1.min.js', array(), 'cdn', false);
add_filter('script_loader_src', 'jquery_local_fallback', 10, 2);
}
}
add_action('wp_enqueue_scripts', 'load_scripts', 100);
function jquery_local_fallback($src, $handle = null) {
static $add_jquery_fallback = false;
if ($add_jquery_fallback) {
echo '<script>window.jQuery || document.write(\'<script src="';
echo get_template_directory_uri() . '/assets/js/jquery-3.4.1.min.js';
echo '"><\/script>\')</script>' . "\n";
$add_jquery_fallback = false;
}
if ($handle === 'jquery') {
$add_jquery_fallback = true;
}
return $src;
}
add_action('wp_head', 'jquery_local_fallback');
SELECT
`ID`
, `post_title`
, pv30.cnt_month
, COALESCE(pv7.cnt_week, 0) cnt_week
, COALESCE(pv1.cnt_day, 0) cnt_day
FROM `wp_posts` AS p
INNER JOIN (
SELECT id, count(id) cnt_month
FROM `wp_post_views` pv
WHERE pv.time >= CURDATE() - INTERVAL 30 DAY
GROUP BY pv.id
) AS pv30
ON pv30.id = p.id
LEFT JOIN (
SELECT id, count(id) cnt_week
FROM `wp_post_views` pv
WHERE pv.time >= CURDATE() - INTERVAL 7 DAY
GROUP BY pv.id
) AS pv7
ON pv7.id = p.id
LEFT JOIN (
SELECT id, count(id) cnt_day
FROM `wp_post_views` pv
WHERE pv.time >= CURDATE() - INTERVAL 1 DAY
GROUP BY pv.id
) AS pv1
ON pv1.id = p.id
ORDER BY pv30.cnt_month DESC, pv7.cnt_week DESC, pv1.cnt_day DESC
LIMIT 10;
setTimeout(Red, 1000);
setTimeout(Green, 2000);
setTimeout(Blue, 3000);
var i=0,
timer = setInterval(()=>
h1.style.color = ['red','green','blue'][i++] || clearInterval(timer)
, 1000)
https://jsfiddle.net/m5qg1us9/var myFunctions = [Red, Green, Blue]
var i=0, timer = setInterval(()=>{
if (i < myFunctions.length) myFunctions[i++]()
else clearInterval(timer)
}, 1000)
https://jsfiddle.net/nk7gepjw/register_post_type();
meta_query