您可以使用$wpdb构建一个SQL查询,其中包含将列出所有术语的数组中的所有post ID。或者最好在同一个查询中获取帖子ID,而不是从您提到的数组中获取它们。
这是一个示例:
global $wpdb;
$query = $wpdb->get_results( $wpdb->prepare( "select * from `$wpdb->term_relationships` where object_id IN (select ID from $wpdb->posts where post_type = \'%s\' AND post_author = %d)", \'some_custom_post_type\', get_current_user_id() ), ARRAY_A);
print\\u r($查询);并查看返回值。由于get\\u results与ARRAY\\u一起使用,它将返回一个包含SQL结果的关联数组。
在SQL查询示例中,我没有使用连接来使查询更容易理解,但在DB端使用连接将更加有效。
稍后编辑:与上述答案相同的SQL联接查询示例如下:SELECT wp_posts.ID, wp_term_relationships.term_taxonomy_id, wp_term_relationships.term_order FROM wp_posts INNER JOIN wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_id AND wp_posts.post_type = \'some_custom_post_type\' AND wp_posts.post_author = 1
为了通过$wpdb执行SQL查询,您需要更改“wp”表前缀,以便使用$wpdb->table\\u name对表进行寻址,此后Wordpress将负责前缀的更改。然后查询变成:SELECT $wpdb->posts.ID, $wpdb->term_relationships.term_taxonomy_id, $wpdb->term_relationships.term_order FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON $wpdb->posts.ID = $wpdb->term_relationships.object_id AND $wpdb->posts.post_type = \'some_custom_post_type\' AND $wpdb->posts.post_author = 1
然后,您还可以使用“prepare”方法将SQL查询包括在$wpdb->get\\u results方法中,最终得到:global $wpdb;
$query = $wpdb->get_results( $wpdb->prepare( "SELECT $wpdb->posts.ID, $wpdb->term_relationships.term_taxonomy_id, $wpdb->term_relationships.term_order FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON $wpdb->posts.ID = $wpdb->term_relationships.object_id AND $wpdb->posts.post_type = %s AND $wpdb->posts.post_author = %d", \'some_custom_post_type\', get_current_user_id() ), ARRAY_A);
尝试一下我在答案中提出的建议,然后继续尝试join方式。如果这对你有帮助,请不要忘记接受答案!有关SQL联接的更多信息,请访问此处http://www.w3schools.com/sql/sql_join.asp有关使用wpdb类实例和方法的更多信息,请转到此处:https://codex.wordpress.org/Class_Reference/wpdb