缓存麻烦和3 wp_query

时间:2017-02-06 12:16:31

标签: wordpress caching

在我在WordPress中的自定义主题中,我创建了一个front-page.php。我有三个WP_Query。第一个只采用自定义帖子类型。

$args = array (
    'post_type'      => array( 'frontpage_element' ),
    'orderby'        => 'rand',
    'posts_per_page' => '1',
);
$query = new WP_Query( $args );
if ($query->have_posts()):
    while ($query->have_posts() ) : $query->the_post();
        // DISPALY A PICTURE
    endwhile;

    // Reset postdata
    wp_reset_postdata();
endif;

第二个是默认循环。

if (have_posts()) : 
    while (have_posts()) : the_post(); ?>
        the_title();
        the_content();

    endwhile; 

    // Reset postdata
    wp_reset_postdata();

endif;

第三个WP_Query显示了一个类别的前6个帖子条目。

$options = get_option('custom_theme_options');
$categories = implode("," , $options['catprojectlayout']);
$atts = shortcode_atts( array(
       'paging'     => 'projectpage',
       'post_type'      => 'post',
       'posts_per_page'     => '6',
       'post_status'        => 'publish',
       'cat' => $categories,
       'cache_results' => false
 ), $atts );

 $paging = $atts['paging'];
 unset( $atts['paging'] );

 if( isset($_GET[$paging]) )
    $atts['paged'] = $_GET[$paging];
 else
    $atts['paged'] = 1;

$custom_query = new WP_Query( $atts );
$pagination_base = add_query_arg( $paging, '%#%' );

if ($custom_query->have_posts()) : while ($custom_query->have_posts()) : $custom_query->the_post(); 
    the_title();
    the_content();
endwhile; endif; 

echo paginate_links( array(
    'type'      => '',
    'base'      => $pagination_base,
    'format'    => '?'. $paging .'=%#%',
    'current'   => max( 1, $custom_query->get('paged') ),
    'total'     => $custom_query->max_num_pages,
    'prev_text' => '<div class="prevbtn"></div>',
    'next_text' => '<div class="nextbtn"></div>',
    'show_all' => true
)); 

代码有效,但我在缓存方面遇到了麻烦。当我向定义的类别添加新帖子时,第二个WP_Query没有更新(我认为是因为浏览器缓存)。

我认为我的代码已完成,如WP Codex中所定义。

应该这样工作:当我在定义的类别中添加新帖子时,用户浏览到首页,必须从服务器重新加载该站点(因为在第三个WP_Query中有一个新条目)。

1 个答案:

答案 0 :(得分:0)

由于浏览器倾向于存储样式表和图像,因此每次加载页面时页面内容通常会被重新解释,因为它已被更改。

更有可能是在服务器上兑现或者其他第三方服务,例如Cloud flare,它会将页面外观存储一段时间,以便一次又一次地重新生成相同的动态页面控件。

WP_Engine托管具有自己的缓存,可以通过安装仪表板清除,Cloud flare允许缓存每个URL和插件清除...这些都是不同的,检查是否有任何插件控制缓存,并在进行更改或清除缓存时将其关闭。