Duplicate Queries

时间:2019-11-01 作者:Alt C

在使用查询监视器插件时,我注意到我进行了4次数据库查询。我正在使用OPP。所以我有一个方法,可以通过查询数据库获得帖子列表。我必须这样做4次,以允许用户选择帖子。我很好奇,是否有什么方法可以存储它并在需要的地方使用?因此,只需进行一次查询。(我实际上是在查询所有ACF字段的列表)

1 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

一般来说,您可以使用WP Transients APIsave the query.

// Get any existing copy of our transient data
if ( false === ( $special_query_results = get_transient( \'special_query_results\' ) ) ) {
    // It wasn\'t there, so regenerate the data and save the transient
     $special_query_results = new WP_Query( \'cat=5&order=random&tag=tech&post_meta_key=thumbnail\' );
     set_transient( \'special_query_results\', $special_query_results, 12 * HOUR_IN_SECONDS );
}

// Use the data like you would have normally...
This article 通过论证存储WP_Query() 对象作为瞬态,并建议将昂贵查询返回的post ID存储在瞬态中,然后使用这些ID创建新的WP_Query. 诚然,使用这种方法,我们将很快返回到重复查询,但它们将是更轻的查询。

$cache_key = \'my-expensive-query\';
if ( ! $ids = get_transient( $cache_key ) ) {
    $query = new WP_Query( array(
        \'fields\' => \'ids\',
        // ...
    ) );

    $ids = $query->posts;
    set_transient( $cache_key, $ids, 24 * HOUR_IN_SECONDS );
}

$query = new WP_Query( array(
    \'post__in\' => $ids,
) );

// while ( $query->have_posts() ) ...

相关推荐

Running multiple WP_Query

我正在尝试在我的主主页中运行多个wp\\U查询。。这是一种好的做法吗?$argsPort= array( \'posts_per_page\' => 6, \'category_name\' => \'portefolio\', \'suppress_filters\' => true, ); $wqPort = new WP_Query($argsPort); $argsServices = a