0
私は現在のユーザーの役割をチェックし、ユーザーの役割に一致する特定のメタキーを持つ投稿を表示する機能を持っています。ここに私のコードです:wordpress pre_get_postsメモリの問題を引き起こします
function wwp_exclude_products($query) {
$exclude = array();
$hide_products = get_option('wwo_hide_wholesale_prices');
if ($query->is_main_query()) {
$featured = get_posts(array(
'post_type' => 'product',
'posts_per_page' => -1
));
if($hide_products){
foreach($featured as $hide) {
$user_price = get_post_meta($hide->ID, '_'.woo_get_user_role().'_price', true);
if($user_price == NULL){
$exclude[] = $hide->ID;
}
}
$query->set('post__not_in', $exclude);
}
}
}
add_filter('pre_get_posts', 'wwp_exclude_products');
私はこの機能を使用するいくつかのサイトでメモリエラーを生成します。ここで
は誤りです:
Allowed memory size of 134217728 bytes exhausted (tried to allocate 72 bytes) in /www/wp-includes/taxonomy.php on line 2037?.
は、私はこれを解決することができます方法はありますか?
おかげで最初のループですべて除外のIDを取得する代わりに
でいくつかのRNDをしなければならない-1'代わりに最初の999を取得してみてください。投稿数が多い場合、 ''posts_per_page' => -1'のクエリはすべての投稿を通過する必要があります。そして、すべての投稿(表示または検索)を必要とする人の可能性は小さいです。 –