/ Published in: PHP
Get all custom taxonomies that are attached to posts that have another custom taxonomy. Like fetching all categories that are attached to products that have the brand taxonomy "Nike".
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
<?php include('wp-load.php'); $nike = get_term_by('slug','nike','brand'); // This here just to illustrate 'post_type' => 'product', 'related_taxonomy' => 'brand', 'term_id' => $nike->term_id, )); foreach($terms as $term) { echo "<p>{$term->name}</p>"; } function get_cross_referenced_terms($args) { global $wpdb; 'post_type' => 'post', 'taxonomy' => 'category', 'related_taxonomy' => 'post_tag', 'term_id' => 0, )); $sql = <<<SQL SELECT DISTINCT {$wpdb->terms}.*, COUNT(*) AS post_count FROM {$wpdb->terms} INNER JOIN {$wpdb->term_taxonomy} ON {$wpdb->terms}.term_id={$wpdb->term_taxonomy}.term_id INNER JOIN {$wpdb->term_relationships} ON {$wpdb->term_taxonomy}.term_taxonomy_id={$wpdb->term_relationships}.term_taxonomy_id INNER JOIN {$wpdb->posts} ON {$wpdb->term_relationships}.object_id={$wpdb->posts}.ID INNER JOIN {$wpdb->term_relationships} related_relationship ON {$wpdb->posts}.ID=related_relationship.object_id INNER JOIN {$wpdb->term_taxonomy} related_term_taxonomy ON related_relationship.term_taxonomy_id=related_term_taxonomy.term_taxonomy_id INNER JOIN {$wpdb->terms} related_terms ON related_term_taxonomy.term_id=related_terms.term_id WHERE 1=1 AND (related_term_taxonomy.taxonomy<>{$wpdb->term_taxonomy}.taxonomy OR related_terms.term_id<>{$wpdb->terms}.term_id) AND {$wpdb->posts}.post_type='%s' AND {$wpdb->term_taxonomy}.taxonomy='%s' AND related_term_taxonomy.taxonomy='%s' AND related_terms.term_id=%d GROUP BY {$wpdb->terms}.term_id SQL; $sql = $wpdb->prepare($sql,$post_type,$taxonomy,$related_taxonomy,$term_id); $terms = $wpdb->get_results($sql); return $terms; }
URL: http://wordpress.stackexchange.com/a/11005