优化 Wordpress 查询
Posted
技术标签:
【中文标题】优化 Wordpress 查询【英文标题】:Optimizing a Wordpress Query 【发布时间】:2017-05-11 00:20:46 【问题描述】:我正在开发一个拥有大型产品数据库的 WordPress 网站。我需要列出所有具有单个分类术语例外的产品。使用 wp_query() 会创建一个巨大的对象并且需要很长时间。此外,出于某种原因,我的论点不会将产品排除在我不想列出的一个分类术语中。这是我当前的查询:
$args = array(
'post_type' => 'products',
'post_status' => 'publish',
'orderby' => 'post_title',
'numberposts' => -1,
'tax_query' => array(
'taxonomy' => 'product-main-cats',
'field' => 'term_id',
'terms' => array(23),
'operator' => 'NOT IN',
),
);
$prods = new WP_Query( $args );
我想使用 wpdb 类重写此查询,以便我只获取我的列表所需的确切内容,而不是巨大的 wp_query() 对象。我需要 wp_post 表中的唯一列是 ID 和 post_title。我只是不确定 mysql 语法,尤其是排除与单个分类术语相关的帖子。谁能帮我重写一下?
TIA!
【问题讨论】:
【参考方案1】:您可以通过 $wpdb
编写此查询,我在您的 WP_Query 下方附加了一个 sql 查询版本。
global $wpdb;
$results = $wpdb->get_results( "SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'products' AND ((wp_posts.post_status = 'publish')) ORDER BY wp_posts.post_title DESC", ARRAY_A );
【讨论】:
谢谢艾哈迈德,这很有帮助,但是分类查询如何取消属于某个术语的帖子的资格? 另外,我确实解决了 tax_query 不起作用的问题。这只是一个语法错误,实际的税务查询参数必须在它们自己的数组中。以上是关于优化 Wordpress 查询的主要内容,如果未能解决你的问题,请参考以下文章