在我在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中有一个新条目)。
答案 0 :(得分:0)
更有可能是在服务器上兑现或者其他第三方服务,例如Cloud flare,它会将页面外观存储一段时间,以便一次又一次地重新生成相同的动态页面控件。
WP_Engine托管具有自己的缓存,可以通过安装仪表板清除,Cloud flare允许缓存每个URL和插件清除...这些都是不同的,检查是否有任何插件控制缓存,并在进行更改或清除缓存时将其关闭。