Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Ajouter une publication aléatoire suivante dans le modèle de page WordPress à l’aide de SQL

8

Vous pouvez souvent obtenir des conseils sur l’amélioration du référencement (optimisation pour les moteurs de recherche) en ajoutant des liens vers vos messages précédents lorsque vous publiez un nouveau message. Cela aide à augmenter le trafic et fonctionne de la même manière que les plugins tels que "Relative Posts", mais en plus simple.

Tous les messages wordpress sont stockés dans une table, par exemple wp_posts et à l’intérieur de cette table, vous trouverez post_title, post_name et ces colonnes sont assez simples. Selon les configurations de vos URL de publication, vous pouvez avoir différents formats de permaliens qui peuvent être configurés dans la section Paramètres – Lien permanent.

Le code PHP suivant peut être inséré dans votre modèle de page, normalement single.php qui est le modèle de publication unique ou page.php pour le modèle de page.

Modifiez wp_posts en conséquence car cela peut varier un peu. La requête SQL renvoie une publication aléatoire où elle exclut les pages, ou les éléments de menu, les liens, etc. Et le statut de la publication doit être publié, ce qui exclut le brouillon. La limite 1 ne renvoie qu’un seul message. Donc, si vous voulez un article précédent, vous pouvez envisager de le modifier pour limiter 2.

Le lien permanent sur mon site est basé sur le post_name qui est plus convivial pour le référencement. Vous pourriez bien personnaliser cela. La requête SQL peut également être personnalisée. Par exemple, vous souhaiterez peut-être renvoyer des publications pertinentes au lieu de publications aléatoires en faisant correspondre la titlevaleur en fonction du titre de la publication actuelle. Ou vous voulez vraiment retourner son message précédent ou suivant trié par date de publication, vous pouvez utiliser le champ ‘post_id’.

commentaires

Yu – « Cool, le hasard est vraiment sympa. Assurez-vous également que le message aléatoire est lié au message actuel. Mais ce n’est généralement pas un gros problème tant que le blog est destiné à un seul genre.

De plus, la commande par RAND() fonctionne correctement pour des milliers d’enregistrements. (généralement le cas pour un blog normal). Mais cela brûlera votre base de données si vous avez des millions d’enregistrements dans la même table qui correspondent aux critères de recherche."

Oui, l’ ordre SQL par rand() est un peu délicat et lent. Il doit récupérer tous les enregistrements et les trier de manière aléatoire. Il est considéré comme peu efficace lorsque la taille de la table est moyenne ou grande. Vous pouvez utiliser l’astuce suivante pour obtenir un enregistrement aléatoire plus rapidement en utilisant la fonction rand() en PHP.

// get total number of records $query = "select count(1) from `table`"; $result = mysql_query($query) or die(mysql_error()); $total = mysql_result($result, 0, 0); // get a random $r = rand(0, $total - 1); // return a number between 0 and $total - 1 inclusive using PHP $query = "select * from `table` limit $r, 1"; $result = mysql_query($query) or die(mysql_error());

Les causes de limite SQL spécifient le décalage et le second paramètre spécifie le nombre d’enregistrements à extraire.

Meilleur enregistrement aléatoire

D’après ce qui précède, l’ ordre par rand() est extrêmement inefficace si vous avez une très grande table car pour le tri (même si vous ne voulez qu’un seul élément), la fonction rand() sera invoquée et c’est ce que nous ne faisons pas vouloir. Nous pouvons améliorer ce qui précède en utilisant deux requêtes, la première renvoie le nombre total de messages, et nous avons une fonction aléatoire PHP et obtenons l’enregistrement aléatoire en utilisant l’ instruction limit.

Source d’enregistrement: helloacm.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More