web-dev-qa-db-fra.com

Meilleure approche pour créer des sections chaudes et tendances

Je vais implémenter une section Hot and Trending sur un site Web. J'ai vu de telles sections sur de nombreux sites Web populaires, mais je ne peux pas vraiment comprendre comment cela fonctionne.

Bien que j'ai supposé que Hot section est la publication la plus populaire (basée sur les vues de publication) que j'ai développée avec un WP_Query personnalisé. Et il fonctionne.

$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 );

Mais je suis coincé sur Trending section. En quoi consiste exactement l'idée de créer une requête personnalisée?.

Je veux savoir quelle est la meilleure approche pour obtenir du contenu dans chaque section. J'ai essayé de chercher sur Google pendant quelques jours, mais je n'ai rien trouvé d'utile.

MODIFIER

Mes vues de post fonctionnent.

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

Selon mon opinion personnelle, cela peut prendre un peu de ressources, vous devrez donc mettre en œuvre un type de système de cache, ou même regarder les systèmes transitoires.

Ce que vous voulez faire, c'est étendre votre fonction d'affichage de publication actuelle ou même en créer une sur le côté pour cela. Vous voudriez capturer chaque vue deux fois, une fois pour la vue de page normale, comme vous le faites actuellement ($count_key), et deuxièmement pour une fonction de vue personnalisée utilisant peut-être $custom_count_key

Voici comment $custom_count_key fonctionnerait:

  • Une page vue est enregistrée lorsque la page (publication) est visitée comme d'habitude

  • Ce champ est effacé (toutes les données supprimées) quotidiennement/hebdomadairement/etc. en fonction de la manière dont vous souhaitez définir votre Trending section. Cela définirait à nouveau la valeur 0 au début d'un nouveau jour/semaine/etc.

Ce que vous devrez faire:

  • Comme indiqué, étendre ou écrire une autre fonction d'affichage de page pour stocker des vues quotidiennes/hebdomadaires/etc

  • Créez une fonction qui s'exécutera à une heure quotidienne/hebdomadaire/etc (quelle que soit la suite de vos besoins) qui effacera/nettoiera les valeurs de ce méta-champ.

  • Créez votre requête personnalisée pour interroger un nombre x de publications ayant le plus grand nombre de vues pour le jour/semaine/etc. Les publications récupérées par cette requête seront différentes tout au long de la journée/de la semaine/etc, car les vues de chaque publication sont augmentées en raison des visites sur les pages.

  • Vous pouvez également enregistrer les résultats d’un jour/semaine/etc dans la base de données pour référence future avant de supprimer/supprimer les valeurs actuelles à la fin du jour/semaine/etc, mais c’est à vous et peut-être même tout simplement. une perte de temps et d'espace

Ceci est juste une idée de base que vous pouvez utiliser. Je ne suis pas en mesure de coder quelque chose comme cela pour le moment, mais ce serait vraiment bien si vous utilisiez cette idée pour poster votre solution de travail finale à ceci

Bonne chance et bonne chance dans ce projet

3
Pieter Goosen

L'idée typique derrière les tendances est le contenu qui est populaire depuis peu de temps. Si vous ne capturez que le nombre total de vues de publication pour le contenu, vous ne disposerez probablement pas de données pour l'implémenter.

Par exemple:

  • Le message A a 100 jours, totalisait 100 000 vues, environ 1 000 vues par jour.
  • Le poste B a 10 jours, il avait 10 000 vues, dont 8 000 le dernier jour.

A est populaire depuis longtemps, mais B est à la tendance en ce moment (même si auparavant, son trafic était inférieur à A et était quotidien).

Vous devez être capable de dire la valeur "glissante", pas seulement les vues dans la vie de la publication, mais comment ces vues sont-elles réparties dans le temps (à un niveau de précision acceptable).

2
Rarst

La tendance est faite en utilisant entre deux valeurs,

Exemple

  • meta value de vues de vues> = 1000
  • Et l’autre post meta value = <3000

Et la page chaude

  • Méta valeur => 3001.

Je ne peux pas poster le code maintenant je suis de mobile, je l'ai utilisé dans mon site de bande dessinée

0
Shady M Rasmy

Comme @cybmeta l'a dit ... Vous pouvez définir les tendances comme vous le souhaitez. Mais je pense que vous devriez envisager d’utiliser la valeur des partages sociaux pour les posts tendances. Si vous utilisez un plugin de partage social, vous pouvez en extraire la valeur.

0
rafsuntaskin

recherche de page de tendance

$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 );

la requête de page dynamique doit être la même, mais la méta-valeur 3000 ou plus. Ce code est la tendance d'aujourd'hui. ce code est testé sur mon site et fonctionne, et j'ai également ajouté par semaine et par mois et tous les temps

0
Shady M Rasmy