Wordpress SQL_CALC修复导致PHP错误
我正在寻找Wordpress的一个老主题的后续内容,在这个主题中,当Wordpress中有一个较大的DB时,发现SQL_CALC会减慢速度。我一直在使用这篇文章底部的代码来绕过它,但它确实在我的错误日志中生成了一个错误。如何防止此错误Wordpress SQL_CALC修复导致PHP错误,php,mysql,wordpress,Php,Mysql,Wordpress,我正在寻找Wordpress的一个老主题的后续内容,在这个主题中,当Wordpress中有一个较大的DB时,发现SQL_CALC会减慢速度。我一直在使用这篇文章底部的代码来绕过它,但它确实在我的错误日志中生成了一个错误。如何防止此错误 PHP Warning: Division by zero in /var/www/vhosts/domain.com/httpdocs/wp-content/themes/greatTheme/functions.php on line 19 原始线程:
PHP Warning: Division by zero in /var/www/vhosts/domain.com/httpdocs/wp-content/themes/greatTheme/functions.php on line 19
原始线程:
my functions.php中的代码:
add_filter('pre_get_posts', 'optimized_get_posts', 100);
function optimized_get_posts() {
global $wp_query, $wpdb;
$wp_query->query_vars['no_found_rows'] = 1;
$wp_query->found_posts = $wpdb->get_var( "SELECT COUNT(*) FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')" );
$wp_query->found_posts = apply_filters_ref_array( 'found_posts', array( $wp_query->found_posts, &$wp_query ) );
$wp_query->max_num_pages = ceil($wp_query->found_posts / $wp_query->query_vars['posts_per_page']);
return $wp_query;
}
大概
$wp\u query->query\u vars['posts\u per\u page']
设置为0,这意味着您要求PHP将$wp\u query->found\u posts
除以0。当然,这是不可能做到的。我不知道在你的代码中这个变量是在哪里设置的(WP正在处理这个问题吗?),但是通过添加一个print\r$WP\u query->query\u vars['posts\u per\u page']很容易确认这一点代码>在该行之前 根据@Daan的建议,我尝试了以下方法,但没有产生任何错误:
add_filter('pre_get_posts', 'optimized_get_posts', 100);
function optimized_get_posts() {
global $wp_query, $wpdb;
$wp_query->query_vars['no_found_rows'] = 1;
$wp_query->found_posts = $wpdb->get_var( "SELECT COUNT(*) FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')" );
$wp_query->found_posts = apply_filters_ref_array( 'found_posts', array( $wp_query->found_posts, &$wp_query ) );
if($wp_query->query_vars['posts_per_page'] <= 0) {
$wp_query->max_num_pages = 0;
} else {
$wp_query->max_num_pages = ceil($wp_query->found_posts / $wp_query->query_vars['posts_per_page']);
}
return $wp_query;
}
add_filter('pre_get_posts','optimized_get_posts',100);
函数优化_get_posts(){
全局$wp_查询,$wpdb;
$wp\u query->query\u vars['no\u found\u rows']=1;
$wp_query->found_posts=$wpdb->get_var(“从wp_posts中选择COUNT(*),其中1=1,wp_posts.post_type='post'和(wp_posts.post_status='publish'或wp_posts.post_status='private');
$wp_query->found_posts=apply_filters_ref_数组('found_posts',数组($wp_query->found_posts,&$wp_query));
如果($wp\u query->query\u vars['posts\u per\u page']max\u num\u pages=0;
}否则{
$wp\u query->max\u num\u pages=ceil($wp\u query->found\u posts/$wp\u query->query\u vars['posts\u per\u page']);
}
返回$wp_查询;
}
基本上,代码检查$wp\u query->query\u vars['posts\u per\u page']
是否有正值,因此可以适当地划分$wp\u query->found\u posts