每次我在下面的函数中调用WP\\u Query(),Wordpress都会泄漏8兆内存。因为我经常调用这个函数,所以事情很快就变得复杂了…:(我尝试过取消生成的$queryObject的设置,并定期调用wp\\u cache\\u flush(),但这两种方法似乎都没有任何效果。有什么想法吗?
function get_post_ids_in_taxonomies($taxonomies, &$terms=array()) {
$post_ids = array();
$query = gen_query_get_posts_in_taxonomies($taxonomies, $terms);
// var_dump($query);
//Perform the query
$queryObject = new WP_Query($query); //*****THE 8 MEGABYTES IS LEAKED HERE*****
//For all posts found...
if($queryObject->have_posts()) {
while($queryObject->have_posts()) {
$queryObject->the_post();
//Get the $post_id by capturing the output of the_ID()
ob_start();
the_ID();
$post_id = (int) ob_get_contents();
ob_end_clean();
// echo $post_id."\\n";
$post_ids[] = $post_id;
}
}
unset($queryObject);
return $post_ids;
}
gen\\u query\\u get\\u posts\\u in\\u taxonomies()是:
function gen_query_get_posts_in_taxonomies($taxonomies, &$terms=array()) {
//General query params
$query = array(
\'posts_per_page\' => -1, //Get all posts (no paging)
\'tax_query\' => array(\'relation\' => \'OR\'),
);
//Add the specific taxonomies and terms onto $query[\'tax_query\']
foreach($taxonomies as $tax) {
//Get terms in the taxonomies if we haven\'t yet
if(!array_key_exists($tax, $terms)) {
$terms[$tax] = array();
$terms_tmp = get_terms($tax);
foreach($terms_tmp as $tt)
$terms[$tax][] = $tt->term_taxonomy_id;
}
$query[\'tax_query\'][] = array(
\'taxonomy\' => $tax,
\'terms\' => $terms[$tax],
\'field\' => \'term_taxonomy_id\',
);
}
return $query;
}