Wie schränke ich die WordPress-Tagcloud nach Datum ein?
Lesezeit: 4 Minuten
Ich suche schon seit geraumer Zeit nach einer Möglichkeit, WordPress-Tags nach Datum zu begrenzen und sie nach der Häufigkeit zu ordnen, mit der sie im ausgewählten Zeitraum erschienen sind. Aber ich war ziemlich erfolglos.
Was ich versuche zu erreichen, ist so etwas wie die Trending Topics auf Twitter. Aber in diesem Fall „Trend-Tags“. Standardmäßig zeigt die WordPress-Tagcloud die beliebtesten Tags aller Zeiten an. Was in meinem Fall keinen Sinn macht, da ich aktuelle Trends verfolgen möchte.
Idealerweise wäre es so etwas wie:
Die beliebtesten Tags von heute
Obama (18 Erwähnungen)
New York (15 Erwähnungen)
Iron Man (11 Erwähnungen)
Robin Hood (7 Erwähnungen)
Und dann multipliziert für „beliebtest in dieser Woche“ und „beliebtest in diesem Monat“. Kennt jemand eine Möglichkeit, dies zu erreichen?
Artlung
Okay, ich denke, Sie möchten dies wahrscheinlich für die letzten 50 Beiträge tun.
Schleife über die letzte n Beiträge, extrahieren Sie die term_id jedes Tags für jeden Beitrag, dann übergeben Sie diese Zeichenfolge an die include Argument von wp_tag_cloud();
$how_many_posts = 50;
$args = array(
'posts_per_page' => $how_many_posts,
'orderby' => 'date',
'order' => 'DESC',
);
// get the last $how_many_posts, which we will loop over
// and gather the tags of
query_posts($args);
//
$temp_ids = array();
while (have_posts()) : the_post();
// get tags for each post
$posttags = get_the_tags();
if ($posttags) {
foreach($posttags as $tag) {
// store each tag id value
$temp_ids[] = $tag->term_id;
}
}
endwhile;
// we're done with that loop, so we need to reset the query now
wp_reset_query();
$id_string = implode(',', array_unique($temp_ids));
// These are the params I use, you'll want to adjust the args
// to suit the look you want
$args = array(
'smallest' => 10,
'largest' => 30,
'unit' => 'px',
'number' => 150,
'format' => 'flat',
'separator' => "\n",
'orderby' => 'count',
'order' => 'DESC',
'include' => $id_string, // only include stored ids
'link' => 'view',
'echo' => true,
);
wp_tag_cloud( $args );
wahrscheinlich die einzige Möglichkeit, dies zu tun, wenn man bedenkt, wie Tags gespeichert werden, aber es wird sehr langsam, wenn die Anzahl der Posts zunimmt …
– Kasumi
23. Juni 2010 um 9:11 Uhr
Vielen Dank! Achten Sie darauf, die Zeile „$posttags = get_the_tags()“ mit einem Semikolon abzuschließen. Ich habe das mit dem ausführbaren PHP-Widget zum Laufen gebracht und das Ganze mit umgeben. Beispiel: priestessastrology.com
– Zade
27. Februar 2012 um 23:21 Uhr
@Zade Ich habe das Semikolon hinzugefügt. Fühlen Sie sich frei, Antworten mit Syntaxfehlern auf Stack Overflow zu bearbeiten, sobald Sie über ausreichendes Karma für Berechtigungen verfügen!
– Artlung
28. Februar 2012 um 1:14 Uhr
Ich bin mir ziemlich sicher, dass Tags keine Zeitstempel haben – vielleicht könnten Sie nach Beiträgen mit bestimmten Tags für einen bestimmten Zeitraum suchen?
Sie haben tatsächlich keine Zeitstempel. Da sie sich jedoch auf Posts beziehen und Posts einen Zeitstempel haben, dachte ich, dass es möglich sein sollte, diese Zeitstempel abzurufen. Deine Antwort hat mich aber nachdenklich gemacht. Wäre es nicht am einfachsten, den Tags einfach eine Zeitstempeltabelle hinzuzufügen?
– Nordin
1. Juni 2010 um 13:10 Uhr
Ich denke, Sie können sich einige der Plugins ansehen und sehen, ob Sie ein Plugin haben, das dem entspricht, was Sie brauchen
Sie können die Tag-Liste mit einer Abfrage abrufen, sodass Sie keine Schleife machen müssen, um den letzten X-Post zu werfen.