我遇到了一个问题,尝试了很多方法来解决-
我要做的是在运行wordpress wp\u查询之前修改它:根据帖子的父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' );
但运气不好。如果有人对我如何修改这个查询中的连接条件有什么建议,我将不胜感激!提前多谢了。
暂无答案!
目前还没有任何答案,快来回答吧!