web-dev-qa-db-fra.com

get_categories pour le type de message personnalisé et le filtre par taxonomie personnalisée (marque) et liste les catégories enfants d'une catégorie définie

Grâce à @MikeSchinkel, j'ai le code suivant:

$term = get_query_var('term');
    $brand = get_term_by('slug',$term,'brands'); // This here just to illustrate
    $categories = get_cross_referenced_terms(array(
    'post_type'        => 'Products',
    'taxonomy'         => 'category',
    'related_taxonomy' => 'brands',
    'term_id'          => $brand->term_id
  ));

qui utilise la fonction suivante:

// query to get categories for a specific tag
function get_cross_referenced_terms($args) {
  global $wpdb;
  $args = wp_parse_args($args,array(
    'post_type'        => 'Products',
    'taxonomy'         => 'category',
    'related_taxonomy' => 'brands',
    'term_id'          => 0,
  ));
  extract($args);
  $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_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
  AND {$wpdb->term_taxonomy}.parent=0
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;
}

Ceci est utilisé sur la page category.php et fonctionne très bien, mais je dois maintenant utiliser le même code (idéalement) sur la page de catégorie enfant?

Ainsi, par exemple, je l'ai sur une page de catégorie "formateurs", filtrée par marque de "nike" pour le type de produit personnalisé "produits".

J'en ai maintenant besoin pour afficher toutes les catégories de "formateurs" pour enfants, également filtrées par marque de "nike" pour le type de produit personnalisé.

Y at-il un moyen d'ajouter simplement?

'category_id'         => '$parent_category',

Toute aide serait grandement appréciée! Merci

Dave

2
daveaspinall

Vous pouvez obtenir la catégorie parent assez simple: elle est assignée à l'objet.

$cat = get_category( $q_cat );
// Get the ID
echo $cat->category_parent;
3
kaiser