Add_Filter>Posts_Where部分工作 时间:2015-10-07 作者:Mr.Smith 我开始使用以下代码:Used with meta_query in query_posts works slowly我更改了代码并开始使用add_filterfunction filter_where($where = \'\'){ global $wpdb; if($_GET[\'fromNumberOfRooms\'] > 0) { $where .= " AND ($wpdb->postmeta.meta_key = \'number-of-rooms\' AND $wpdb->postmeta.meta_value >= {$_GET[\'fromNumberOfRooms\']})"; } if($_GET[\'upToNumberOfRooms\'] > 0) { $where .= " AND ($wpdb->postmeta.meta_key = \'number-of-rooms\' AND $wpdb->postmeta.meta_value <= {$_GET[\'upToNumberOfRooms\']})"; } if($_GET[\'fromSize\'] > 0) { $where .= " AND ($wpdb->postmeta.meta_key = \'size\' AND $wpdb->postmeta.meta_value >= {$_GET[\'fromSize\']})"; } if($_GET[\'upToSize\'] > 0) { $where .= " AND ($wpdb->postmeta.meta_key = \'size\' AND $wpdb->postmeta.meta_value <= {$_GET[\'upToSize\']})"; } if($_GET[\'fromPrice\'] > 0) { $where .= " AND ($wpdb->postmeta.meta_key = \'price\' AND $wpdb->postmeta.meta_value >= {$_GET[\'fromPrice\']})"; } if($_GET[\'upToPrice\'] > 0) { $where .= " AND ($wpdb->postmeta.meta_key = \'price\' AND $wpdb->postmeta.meta_value <= {$_GET[\'upToPrice\']})"; } return $where; } add_filter(\'posts_where\', \'filter_where\'); 但现在只有过滤price 或size 或number-of-rooms 如果我尝试过滤所有变量,则不会显示任何内容 1 个回复 SO网友:Rarst 这看起来不会产生有意义的SQL,键不能同时保存不同的值(这就是为什么在复杂查询中通常需要连接)。还使用$_GET 查询中的全局是horribly insecure, 如果您在live site附近的任何地方有此文件,应立即将其删除。您之前使用的问题WP_Query, 如果它真的起作用了(即使很慢),您应该从研究它生成的SQL开始,并从这一点开始进行优化。 文章导航