Zum Hauptinhalt springen

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.

info

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.)

tipp

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 empfohlen
  • float 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 empfohlen
  • float 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
info

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