优化 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 查询的主要内容,如果未能解决你的问题,请参考以下文章

WordPress - SQL 查询优化

如何优化我的查询?使用类别和标签列表导出 Wordpress 帖子

优化 Wordpress 数据库设计

wordpress上传数据库出现 1065错误

怎么优化wordpress网站

有没有办法提高这个简单的 WordPress 数据库查询的性能?