Beitragsalterung für Fortgeschrittene
Betreibt man als Publisher keine Seite mit 100% Evergreen-Content, so beschäftigt man sich früher oder später mit der Frage, wie man den Relevanzverlust eines Beitrags in den Empfehlungen abbilden kann. Dazu bietet wp engage eine Reihe an Funktionen, mit denen diese Beitragsalterung abgebildet werden kann
Konzept
Das Alterungsmodell von wp engage arbeitet mit zwei Parametern: einem altersbezogenen Relevanzfaktor, sowie einem Terminbezogenen Ausschluss des Beitrags von Empfehlungen.
Altersbezogener Relevanzfaktor
Ein Beitrag verliert ab einem gewissen Alter an Relevanz. Mit dem altersbezogenen Relevanzfaktor wird dieser Relevanzverlust abgebildet. Dazu werden jedem Beitrag zwei Datumswerte (absolut als Datum, oder relativ als Tage ab dem Veröffentlichungsdatum), sowie ein Stärkewert übergeben:
- Neu: Ein Beitrag bis zu diesem Datum wird als "neu" betrachtet, somit besteht in der Gruppe der "neuen" Beiträgen keine Unterscheidung nach Alter. Auch Beiträge, die "evergreen" sind, also keine Alterungsdaten haben, befinden sich in dieser Gruppe.
- Alt: Ein Beitrag ab diesem Beitrag gilt als "alt. Das bedeutet, dass er eigentlich nicht mehr relevant ist
- Stärke: Der Stärkewert gibt an, wie relevant die Alterung für diesen Beitrag ist (bspw. für Wetter hoch, für Kochrezepte niedrig)
Das System ermittelt nun zwischen den Datumswerten Neu und Alt iterativ den tagesgenauen Alterswert, und multipliziert diesen mit dem Stärkewert, was dann den Relevanzfaktor ergibt. Dieser wird dann bei der Ermittlung der Ergebnisse berücksichtigt.
Ein Beitrag kann auch weiterhin, nachdem sein "Alt" - Wert überschritten ist, empfohlen werden, bspw. wenn er von Nutzern häufig geklickt wird.
Terminbezogener Ausschluss
Für jeden Beitrag kann ich auch einen terminbezogenen Ausschluss des Beitrags definieren, so dass er nach Verstreichen des Datums nicht mehr in den Empfehlungen auftaucht. Damit lassen sich wirkungsvoll Beiträge empfehlen, die einen konkreten Termin haben, und danach sofort irrelevant werden (bspw. Kampagnen mit Enddatum, Wetternachrichten etc.)
Die beiden Parameter können (und sollten auch) miteinander kombiniert werden.
Umsetzungsbeispiele
Nachfolgendes Beispiel legt für alle Beiträge in der Kategorie mit ID 277 folgendes fest:
- Beiträge, die jünger als 10 Tage sind, sollen altersmäßig gleich behandelt werden (mit vollem Aktualitätsbonus)
- Beiträge, die älter als 30 Tage sind, ebenso (ohne Aktualitätsbonus)
- Beiträge dazwischen verlieren graduell ihren Aktualitätsbonus
- Beiträge, die älter als 40 Tage sind, werden nicht mehr empfohlen
add_action('wp_engage_custom_post_ageing_rules', function ($post_id) {
$aging = new wp_engage_age_controller($post_id);
if (in_category(277, $post_id)) {
$aging->set_relative_age_parameters(new_days: 10, old_days: 30, expired_days: 40);
}
});
Natürlich lassen sich damit auch komplexe Logiken definieren, wie folgendes Beispiel zeigt:
add_action('wp_engage_custom_post_ageing_rules', function ($post_id) {
$aging = new wp_engage_age_controller($post_id);
//wenn Wetter, dann nach 2 Tagen einfach entfernen
if (in_category('wetter', $post_id)) {
$aging->set_relative_age_parameters(expired_days: 2);
}
// aktuelle Nachrichten altern bereits nach 5 Tagen und verlieren dann bis zum 15. Tag ihren Aktualitätsbonus
// nach 30 Tagen werden sie nicht mehr empfohlen
// Bei diesen Beiträgen ist das Alter relevanter, was der erhöhte Relevanzfaktor von 0.8 (standard: 0.5) angibt.
else if (in_category('aktuelles', $post_id)) {
$aging->set_relative_age_parameters(new_days: 5, old_days: 15, expired_days: 30, relevance: 0.8);
}
// auch komplexere Bedingungen sind möglich
else if (in_category('reviews', $post_id) && has_post_thumbnail($post_id) && !has_term( 'münchen', 'region' ) ) {
$aging->set_relative_age_parameters(new_days: 25, old_days: 35, expired_days: 60);
}
//wahlweise lassen sich auch Standardwerte für alle übrigen Beiträge definieren
else {
$aging->set_relative_age_parameters(new_days: 100, old_days: 300, expired_days: 400);
}
});
Referenz
class wp_engage_age_controller()
Die Klasse enthält sämtliche Methoden, um die Alterungswerte abzubilden
Konstruktor
Argumente
int
post_id: die ID des Posts, der angepasst werden soll.
Methoden
set_relative_age_parameters
Definiert die Altersparameter anhand des Alters in Tagen ab Veröffentlichung.
Argumente
int
new_days: wie viele Tage nach Veröffentlichungstag ist der Beitrag "neu"int
old_days: wie viele Tage nach Veröffentlichungstag ist der Beitrag "alt"int
expired_days: wie viele Tage nach Veröffentlichungstag wird der Beitrag nicht mehr empfohlenfloat
relevance: wie relevant ist die Alterung für den Beitrag: Der Wert muss zwischen 0 und 1 liegen (0: nicht relevant, 1: äußerst relevant), Standard: 0.5
Beispiel
$aging = new wp_engage_age_controller($post_id);
$aging->set_relative_age_parameters(new_days: 10, old_days: 30, expired_days: 40, relevance: 0.2);
set_absolute_age_parameters
Definiert die Altersparameter anhand tatsächlicher Datumsangaben.
Argumente
string
new_date: bis zu welchem Datum ist der Beitrag "neu"string
old_date: ab welchem Datum ist der Beitrag "alt"string
expired_date: ab welchem Datum wird der Beitrag nicht mehr empfohlenfloat
relevance: wie relevant ist die Alterung für den Beitrag: Der Wert muss zwischen 0 und 1 liegen (0: nicht relevant, 1: äußerst relevant), Standard: 0.5
Die Datumsangaben müssen im Format 'YYYY-MM-DD' erfolgen, also bspw. 2025-01-16 für den 16. Januar 2025.
Beispiel
$aging = new wp_engage_age_controller($post_id);
$aging->set_relative_age_parameters(new_date: '2025-02-28', old_date: '2025-06-30', expired_date: '2025-12-31', relevance: 0.8);
has_age_parameters
Liefert zurück, ob ein Beitrag Altersparameter hat, oder nicht
Beispiel
$aging = new wp_engage_age_controller($post_id);
$aging->set_relative_age_parameters(new_date: '2025-02-28', old_date: '2025-06-30', expired_date: '2025-12-31', relevance: 0.8);
echo $aging->has_age_parameters(); // gibt 'true' zurück
remove_age_parameters
Entfernt die Alterungsparameter auf einem Post
Beispiel
$aging = new wp_engage_age_controller($post_id);
$aging->set_relative_age_parameters(new_date: '2025-02-28', old_date: '2025-06-30', expired_date: '2025-12-31', relevance: 0.8);
echo $aging->has_age_parameters(); // gibt 'true' zurück
$aging->remove_age_parameters();
echo $aging->has_age_parameters(); // gibt 'false' zurück