您将无法将复杂的SQL查询直接转换为WP\\U查询。您可以做的是从SQL返回Post ID,并将这些ID传递到WP\\U查询参数中。请注意,这是非常低效的,可能会导致查询速度变慢post__in
速度不快。
您需要修改SQL以包含post ID:
SELECT p.ID, p.post_name, /*... etc... */
接下来我们要告诉你
wpdb::get_results()
要返回数组以便解析出ID,请执行以下操作:
$results = $wpdb->get_results( $sql, ARRAY_A );
接下来我们要使用
wp_list_pluck()
要获取结果的ID,请执行以下操作:
$post_ids = wp_list_pluck( $results, \'ID\' );
最后,我们可以将这些ID传递到
posts__in
WP\\U查询参数:
$query = new WP_Query( array(
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
\'post__in\' => $post_ids,
) );
如果您还想获取术语,则需要获取术语slug或术语id。
您需要修改SQL以包含术语ID。由于您有多个分类法,因此需要对这些分类法使用不同的别名:
SELECT /* ... etc... */ t.term_id as storyline_term_id, t2.term_id as company_term_id
接下来我们要使用
wpdb::get_results()
要返回一个数组,以便解析出术语ID,请执行以下操作:
$results = $wpdb->get_results( $sql, ARRAY_A );
接下来我们要使用
wp_list_pluck()
要获取结果的术语ID,请执行以下操作:
$story_term_ids = wp_list_pluck( $results, \'storyline_term_id\' );
$company_term_ids = wp_list_pluck( $results, \'company_term_id\' );
最后,我们可以通过ID获取术语:
$story_terms = get_terms( array(
\'taxonomy\' => \'storylines\',
\'object_ids\' => $story_term_ids,
) );