2009-06-18 5 views
0

Mit Wordpress, ich brauche ein Array von Tags (Begriffe) aus Beiträge in einer bestimmten Kategorie generieren.Wordpress: Generieren Array von Tags aus Beiträge in einer bestimmten Kategorie

Zum Beispiel, wenn ich zwei Kategorien habe, "Apfel" und "Orange", möchte ich eine Reihe von Begriffen, die nur in der Kategorie Apfel verwendet werden - nicht in der orange Kategorie. (obwohl, wenn ein Begriff in beide verwendet wird, sollte das enthalten sein)

Ich habe versucht, mit einer Handvoll WordPress-Funktionen, aber keine zurück, was ich will (einschließlich tag_cloud-Funktion). Meine Vermutung ist, dass ich mit einem Abfragebefehl verlassen werde ... aber bis jetzt geben alle meine Fragen mir nicht die Liste, die ich will.

Vielen Dank im Voraus für Ihre Hilfe.

Antwort

1

Ich bin mir nicht sicher, ob Sie mit den Funktionen von WordPress alles erreichen können, was Sie wollen. Hier ist eine SQL-Abfrage, die zu tun scheint, was Sie wollen:

SELECT tag_terms.name, COUNT(wp_posts.ID) FROM wp_posts 

INNER JOIN wp_term_relationships AS cat_term_relationships ON wp_posts.ID= cat_term_relationships.object_ID 
INNER JOIN wp_term_taxonomy AS cat_term_taxonomy ON cat_term_relationships.term_taxonomy_id= cat_term_taxonomy.term_taxonomy_id 
INNER JOIN wp_terms AS cat_terms ON cat_term_taxonomy.term_id= cat_terms.term_id 

INNER JOIN wp_term_relationships AS tag_term_relationships ON wp_posts.ID= tag_term_relationships.object_ID 
INNER JOIN wp_term_taxonomy AS tag_term_taxonomy ON tag_term_relationships.term_taxonomy_id= tag_term_taxonomy.term_taxonomy_id 
INNER JOIN wp_terms AS tag_terms ON tag_term_taxonomy.term_id= tag_terms.term_id 

WHERE cat_term_taxonomy.taxonomy='category' AND cat_terms.name='apple' AND tag_term_taxonomy.taxonomy='post_tag' 
GROUP BY tag_terms.name 

Der Kern ist es, dass Sie die wp_posts Tabelle mit den Taxonomie Tabellen ein paar Mal kommen Sie mit dem Post-IDs in der gewünschten Kategorie zu bekommen und dann kommen diejenigen IDs mit den Taxonomie-Tabellen ein paar Mal, um die zugehörigen Tags zu erhalten.

3

Hier ist, wie Sie dies mit Wordpress Funktionen erreichen können

<?php 
$tags = array(); 

$posts = get_posts('category_name=new-cat&numberposts=-1'); //get all posts in category 

foreach ($posts as $post){ 
    $posttags = get_the_tags($post->ID); //check for tags 
    if ($posttags){ 
     foreach ($posttags as $posttag){ 
      $tags[$posttag->term_id] = $posttag->name; // add to array of tag ids => names 
     } 
    } 
} 
print_r($tags); 
?> 

Dies zu einer rohen SQL-Abfrage bevorzugt sein kann, da diese oft brechen, wenn Wordpress ihr Datenbank-Schema aktualisiert.

Verwandte Themen