Mysql 修改WP_查询请求联接条件

Mysql 修改WP_查询请求联接条件,mysql,wordpress,woocommerce,Mysql,Wordpress,Woocommerce,我遇到了一个问题,并且尝试了很多方法来解决它- 我试图做的是在运行WordPress WP_查询之前修改它:根据帖子的父ID而不是自己的ID进行查询。具体来说,我有一个类似以下内容的查询: SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) INNER JOIN wp_

我遇到了一个问题,并且尝试了很多方法来解决它-

我试图做的是在运行WordPress WP_查询之前修改它:根据帖子的父ID而不是自己的ID进行查询。具体来说,我有一个类似以下内容的查询:

SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID 
FROM wp_posts
INNER JOIN wp_term_relationships 
ON (wp_posts.ID = wp_term_relationships.object_id) 
INNER JOIN wp_postmeta 
ON ( wp_posts.ID = wp_postmeta.post_id )
WHERE 1=1  AND wp_posts.ID IN (1,2) 
AND ( wp_term_relationships.term_taxonomy_id IN (35)
AND wp_posts.post_type = 'product_variation' 
AND ((wp_posts.post_status = 'publish')) 
GROUP BY wp_posts.ID 
ORDER BY wp_postmeta.meta_value DESC LIMIT 0, 12;
传递的帖子是woocommerce的产品变体。问题是我想返回特定分类法中的所有产品变体,但术语\u taxonomy\u id为35仅由父级引用。因此,在上面的第一个连接条件中,我相信我需要:

ON(wp_posts.post_parent = wp_term_relationship.object_id)
应该很简单,但在运行之前,我想不出一种方法来适当地修改这个查询。以下是我尝试过的一些事情:

tax\u查询有一个主\u id\u列,它似乎是要修改的正确值。我尝试在创建查询之前修改参数,如下所示:

$args['tax_query']['primary_id_column'] = 'post_parent';
$wp_query = new WP_Query( $args );
在这种情况下,不会对查询变量进行任何修改。我还尝试了几种在创建对象后修改主\u id\u列的方法,如下所示:

$wp_query->tax_query->primary_id_column = 'post_parent';
$wp_query->tax_query->get_sql('wp_posts', 'post_parent');
$wp_query->set('primary_id_column','post_parent');
它们实际上修改了查询变量,但不管怎样,$wp\u query->request字符串始终包含wp\u posts.ID上的连接条件,而不是wp\u posts.post\u父项上的连接条件。我想知道在我进行这些更改时,查询是否已经生成,并且在我获得帖子之前没有更改。出于这个原因,我尝试在钩子中运行上述线路,使用:

add_action( 'pre_get_posts', 'custom_use_parent' );
但是没有运气。如果有人对我如何修改此查询中的连接条件有任何建议,将不胜感激!非常感谢