将查询缓存24小时的方法

时间:2015-04-09 作者:Venki

希望在wordpress中显示来自tips类别的随机提示,并每24小时更改一次。。。有可能吗?

这是我的问题

// Random post link 
function randomPostlink(){
$RandPostQuery = new WP_Query(array(\'post_type\'=>array(\'tip\'),\'posts_per_page\' => 1,\'orderby\'=>\'rand\'));
while ( $RandPostQuery->have_posts() ) : $RandPostQuery->the_post();
echo the_permalink();
endwhile;
wp_reset_postdata();
}

1 个回复
SO网友:cybmeta

您可以使用WP_Object_Cache 与持久缓存插件结合使用,或者您可以使用Transient API.

WP_Object_Cache:

// Random post link 
function randomPostlink(){

    $cache = wp_cache_get( \'random_tip_link\' );

    if( $cache ) {

        echo $cache;

    } else {

        ob_start();

        $RandPostQuery = new WP_Query(array(\'post_type\'=>array(\'tip\'),\'posts_per_page\' => 1,\'orderby\'=>\'rand\'));

        while ( $RandPostQuery->have_posts() ) {

              $RandPostQuery->the_post();

              echo the_permalink();

        }

        wp_reset_postdata();

        $cache = ob_get_flush();
        wp_cache_set( \'random_tip_link\', $cache );

   }

}

Transient API:

// Random post link 
function randomPostlink(){

    $cache = get_transient( \'random_tip_link\' );

    if( $cache ) {

        echo $cache;

    } else {

        ob_start();

        $RandPostQuery = new WP_Query(array(\'post_type\'=>array(\'tip\'),\'posts_per_page\' => 1,\'orderby\'=>\'rand\'));

        while ( $RandPostQuery->have_posts() ) {

              $RandPostQuery->the_post();

              echo the_permalink();

        }

        wp_reset_postdata();

        $cache = ob_get_flush();
        set_transient( \'random_tip_link\', $cache, DAY_IN_SECONDS );

   }

}
如果需要使用或不使用持久缓存插件缓存查询,请使用瞬态API,该API将数据库用于缓存结果,如果启用了持久缓存,则将使用WP\\U Object\\U缓存:

结束

相关推荐