последние 20 id, с категории
ну вобщем нужно чтоб сортировало рандомно из массива, допустим на 20 постов, предварительно делало выборку по id, а уже потом из полученного выводило ссылки на посты рандомом, короче чтоб не всю таблицу сортировало, а только эту выборку из 20 последних id, вот нашёл на хабре habrahabr.ru/post/132817/
был вот такой код:
$args=array( 'caller_get_posts'=>'1', 'post__not_in' => $sticky, 'cat'=>'75', 'fields'=>'ids', 'post_per_page'=>'20', 'orderby'=>'ID', ); $sk_count = new WP_Query($args); $args=array( 'caller_get_posts'=>'1', 'post__not_in' => $sticky, 'showposts'=>'4', 'cat'=>'75', <b> 'orderby'=>'rand'</b> ); $sk_posts = new WP_Query($args); В нем мы заменили выделенную строку на 'post__in'=>array_rand(array_flip($sk_count->posts),4)
код неполный так и не смог разобраться как к нему прикрутить выборку по категориям
$random_posts_ids = get_posts($args);
$rnd_posts = array_rand($random_posts_ids, $count);
вот типа такого, вместо RAND() не могу разобраться куда это прописать, в пхп не рублю
<?php $categories = get_the_category($post->ID); if ($categories) { $category_ids = array(); foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id; $args=array( 'category__in' => $category_ids, 'post__not_in' => array($post->ID), 'orderby'=> 'rand', //sort by random 'showposts'=>5, // Number of related posts that will be shown. 'caller_get_posts'=>1 ); // Rest is the same as the previous code $my_query = new wp_query($args); if( $my_query->have_posts() ) { echo '<b>Related Posts:</b><p>'; while ($my_query->have_posts()) { $my_query->the_post(); ?> <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a><br /> <?php } echo '</p>'; } wp_reset_query(); } ?>
подскажите, как в верхнем коде заменить 'orderby'=> 'rand' на что то типа
function show_random_posts_optimized($count = 3) { $start = microtime(true); $args = array( 'numberposts' => -1, 'fields' => 'ids', 'post_type' => 'any', ); $random_posts_ids = get_posts($args); $rnd_posts = array_rand($random_posts_ids, $count); foreach ( $rnd_posts as $post_index ) { $id = (int)$random_posts_ids[$post_index]; $post = get_post($id); echo '<p><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></p>'; } $stop = microtime(true); echo '<p>Затраченное время: '.($stop - $start).'</p>'; }
попробую, файлсорт в данном случае сортирует более 150к строк, процессор сервера это напрягает.
А тем временем :)
источник: https://twitter.com/KimDotcom
версия WP 2.8
что нужно добавить в код шаблона, чтобы на нём стал отображать показания WP-Tuner?
пока он только для админки показывает.
как отключить вызов 2-х опций, чтоб они не давали запросов к базе данных?
SELECT option_value FROM wp_options WHERE option_name = 'feedwordpress_automatic_updates' LIMIT 1
SELECT option_value FROM wp_options WHERE option_name = 'sidebars_widgets' LIMIT 1
виджеты и сайдбар у меня прописаны в коде темы, автоматическое обновление тоже отключено, пробовал в файл functions.php шаблона
добавлять
add_option('sidebars_widgets', $value, '', 'no');
но запрос по прежнему идёт, только уже с функций темы.
это надо добавлять ещё до вызова темы, а куда именно непонятно, может кто подскажет?
sj_object_cache+xcache помог, действительно лучшее решение для WP.
отключил сейчас hyper-cache и нагрузка LA 0.14 0.13 0.12 стала меньше, с гипер-кешем было 0.50 0.30 0.25 похоже действительно генерация страничек в кеш много ресурсов жрёт, но без html кеша тоже никак, он спасает при обновлении сайта.