it-swarm.com.de

Bester Ansatz zum Erstellen von Hot- und Trending-Abschnitten

Ich werde einen Hot and Trending-Bereich auf einer Website implementieren. Ich habe solche Abschnitte auf vielen populären Websites gesehen, kann aber nicht wirklich herausfinden, wie genau dies funktioniert.

Obwohl ich angenommen habe, dass Hot section die beliebtesten Beiträge sind (basierend auf den Beitragsansichten), die ich mit einem benutzerdefinierten WP_Query entwickelt habe. Und es funktioniert.

$args = array(
    'post_type' => 'post',
    'post_status' => 'publish',
    'meta_key' => 'post_views',
    'orderby' => 'meta_value_num',
    'ignore_sticky_posts' => 1,
    'paged' => $paged,
);
$hot_query = new WP_Query( $args );

Aber ich stecke fest bei Trending section. Was genau ist die Idee dahinter, eine benutzerdefinierte Abfrage zu erstellen.

Ich möchte wissen, was der beste Ansatz ist, um Inhalte in den einzelnen Abschnitten zu erhalten. Ich habe ein paar Tage lang versucht, auf Google zu suchen, konnte aber nichts wirklich Nützliches finden.

EDIT

Meine Post Views funktionieren.

function set_post_views( $postID ) {
  if ( is_singular() ) {
    $count_key = 'post_views';
    $count = get_post_meta( $postID, $count_key, true );
    if ( $count=='' ) {
      $count = 0;
      delete_post_meta( $postID, $count_key );
      add_post_meta( $postID, $count_key, '0' );
    } else {
      $count++;
      update_post_meta( $postID, $count_key, $count );
    }
  }
}
2
Robert hue

Meiner persönlichen Meinung nach kann dies etwas ressourcenintensiv sein, sodass Sie eine Art Cache-System implementieren oder sich sogar vergängliche Prozesse ansehen müssen

Was Sie tun möchten, ist, Ihre aktuelle Post-View-Funktion zu erweitern oder sogar eine Seite dafür zu erstellen. Sie möchten jede Ansicht zweimal erfassen, einmal für die normale Seitenansicht ($count_key) und zum anderen für eine benutzerdefinierte Ansichtsfunktion mit möglicherweise $custom_count_key.

Nun, so würde $custom_count_key funktionieren:

  • Eine Seitenansicht wird aufgezeichnet, wenn die Seite (der Beitrag) wie gewohnt besucht wird

  • Dieses Feld wird täglich/wöchentlich/usw. gelöscht (alle Daten gelöscht), je nachdem, wie Sie Ihren Trending section definieren möchten. Dies würde den Wert zu Beginn eines neuen Tages/einer neuen Woche/usw. wieder auf 0 setzen

Was Sie tun müssen:

  • Wie bereits erwähnt, erweitern oder schreiben Sie eine andere Seitenansichtsfunktion, um tägliche/wöchentliche/etc-Ansichten zu speichern

  • Erstellen Sie eine Funktion, die täglich/wöchentlich/usw. zu einer bestimmten Zeit ausgeführt wird (je nachdem, welche Option Sie bevorzugen) und die die Werte dieses Metafelds löscht/löscht.

  • Erstellen Sie eine benutzerdefinierte Abfrage, um eine x-Anzahl von Posts abzufragen, die die höchste Anzahl von Views für den bestimmten Tag/die bestimmte Woche/usw. aufweisen. Die Beiträge, die von dieser Abfrage abgerufen wurden, unterscheiden sich im Laufe des Tages/der Woche/usw., da die Aufrufe der einzelnen Beiträge aufgrund von Seitenaufrufen erhöht werden.

  • Sie können die Ergebnisse von einem Tag/einer Woche/usw. auch zur späteren Bezugnahme in der Datenbank speichern, bevor Sie die aktuellen Werte am Ende dieses bestimmten Tages/dieser Woche/usw. löschen/bereinigen. Dies liegt jedoch bei Ihnen und kann sogar gerecht sein eine Verschwendung von Zeit und Raum

Dies ist nur eine Grundidee, die Sie verwenden können. Ich bin derzeit nicht in der Lage, so etwas zu codieren, aber es wäre wirklich nett, wenn Sie diese Idee nutzen würden, um Ihre endgültige funktionierende Lösung für dieses Problem zu veröffentlichen

Viel Glück und alles Gute für dieses Projekt

3
Pieter Goosen

Die typische Idee hinter Trending sind Inhalte, die in der jüngsten Zeit sehr beliebt sind. Wenn Sie nur die Gesamtzahl der Posts für Inhalte erfassen, sind wahrscheinlich keine Daten zur Implementierung verfügbar.

Zum Beispiel:

  • Post A ist 100 Tage alt, hat insgesamt 100.000 Aufrufe und ungefähr 1.000 Aufrufe pro Tag.
  • Post B ist 10 Tage alt und hatte 10.000 Aufrufe, davon 8.000 am letzten Tag.

A ist seit langem beliebt, aber B ist in diesem Moment im Trend (obwohl es zuvor ein geringeres tägliches Verkehrsaufkommen und ein niedrigeres Verkehrsaufkommen als A hatte).

Sie müssten in der Lage sein, den „rollenden“ Wert zu ermitteln, nicht nur die Ansichten in Bezug auf die Lebensdauer des Posts, sondern auch die Verteilung dieser Ansichten in Bezug auf die Zeit (mit einer akzeptablen Genauigkeit).

2
Rarst

Das Trending erfolgt mit zwei Werten:

Beispiel

  • post views meta value> = 1000
  • Und der andere Post-View-Meta-Wert = <3000

Und die heiße Seite

  • Metawert => 3001.

Ich kann den Code jetzt nicht mehr posten, da ich vom Handy aus bin. Ich habe ihn auf meiner Comic-Site verwendet

0
Shady M Rasmy

Wie @cybmeta sagte ... Sie können Trending definieren, wie Sie möchten. Aber ich denke, Sie sollten in Betracht ziehen, den Wert "Social Shares" für die Trendbeiträge zu verwenden. Wenn Sie ein Social-Share-Plugin verwenden, können Sie den Wert von dort extrahieren.

0
rafsuntaskin

trend-Seitenabfrage

$today = getdate();
$args = array(
          'meta_key'     => 'post_views',
          'meta_value'   => '1000',
          'meta_compare' => '>=',
          'orderby'    => 'meta_value_num',
          'ignore_sticky_posts' => 1,
          'paged' => $paged,
          'date_query' => array(
                array(
                        'year'  => $today['year'],
                        'month' => $today['mon'],
                         'day'   => $today['mday'],
    ),
),
);
$trenquery = new WP_Query( $args );

die Hot-Page-Abfrage sollte identisch sein, aber einen Meta-Wert von 3000 oder mehr haben. Dieser Code ist HEUTE Trend. Dieser Code wurde auf meiner Website getestet und funktioniert, und ich habe ihn auch nach Woche, Monat und Zeit hinzugefügt

0
Shady M Rasmy