我正在为使用WP_Query
实例从具有2个非空自定义字段的2种帖子类型中选择帖子。根据现场的具体情况$current_zone
变量可以设置为确定要从中查询的类别。
// Custom loop
$paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
$custom_loop_args = array(
\'post_type\' => array(\'videos\', \'post\'),
\'post_status\' => \'publish\',
\'ignore_sticky_posts\' => 1,
\'paged\' => $paged,
\'meta_query\' => array(
\'relation\' => \'OR\',
array(
\'key\' => \'article_source\',
\'compare\' => \'!=\',
\'value\' => \'\'
),
array(
\'key\' => \'article_link\',
\'compare\' => \'!=\',
\'value\' => \'\'
)
)
);
// Check the current zone
global $current_zone;
// Check for category match to current zone
if ( term_exists($current_zone, \'category\') ) {
$term = get_term_by(\'name\', $current_zone, \'category\');
$custom_loop_args[\'cat\'] = $term->term_id;
}
// Create unique identifier for caching
$cache_id = ( isset($term) ) ? \'_term-\' . $term->term_id : \'_main\';
// Run query or get transient cache
if ( ( $custom_loop = get_transient( "curated_wpquery$cache_id" ) ) === false ) {
// It wasn\'t there, so regenerate the data and save the transient
$custom_loop = new WP_Query( $custom_loop_args );
set_transient( "curated_wpquery$cache_id", $custom_loop, ( 60 * 60 * 1 ) );
}
我正在使用瞬态来加速这一过程,这确实可行,但初始查询需要35秒和大量内存才能完成。我们有一个相当大的数据库,在
posts
桌子我已经清除了修订,但没有注意到性能的提高。
因此,我真正的问题是,如何提高此查询的性能?会是一种习惯吗$wpdb
查询是最好的,还是以这种方式查询自定义字段完全没有效果?
非常感谢您的帮助。