Compteur de vues sur post (articles et pages) pour thème et plugin WordPress (script PHP) avec cookie session

Voilà donc un petit mémo pour une solution basique : Ajouter un compteur de vue sur mes pages ou articles WordPress

En effet, dans le cadre du développement de theme perso WordPress, je suis arrivé à ce besoin de pouvoir afficher le nombre de “views” faites sur un article.

J’ai alors trouvé assez facilement des articles redirigeant en coeur sur un script permettant de faire ceci.
Tous les articles ou sites que je trouvais renvoyés sur ce script et ces variantes :

  • https://gretathemes.com/count-post-views/
  • https://www.themexpert.com/blog/track-display-post-views-in-wordpress
  • https://goodlywp.com/how-to-display-post-views-on-your-wordpress-posts/

J’ai donc longtemps essayé d’utiliser la base de ce script, mais avec à la clef, un gros bug dans le comptage des vues, une incrémentation par 2 au lieu de 1 à chaque rafraîchissement de la page …

Je me suis alors rendu compte que j’étais loin d’être un cas isolé dans ce bug, et qu’une piste montrée du doigt le moteur de Chrome qui pouvait boucler des requêtes envoyant une fausse impression de double visite sur la page.
Dans certains cas, on invitait à voir du coté de la favicon mal réglée (absence de l’url renseignée par exemple) en head, ou encore des scripts, ou même autres tags avec cible manquantes ou foireuses.

Dans mon cas rien à faire, malgré toutes ces vérifications le problème persistait, et pour m’assurer que cela venait de Chrome, rien de complexe, tester avec Internet Explorer et bingo …

Du coup j’ai cherché plusieurs manière de corriger le script, ou l’améliorer, jusqu’à me tourner vers l’utilisation d’un Cookie de session tout simplement.

J’ai donc incorporé l’utilisation de ce Cookie, qui permet de limiter le comptage en fonction de la présence de ce celui ci.

Si le cookie existe, alors pas de comptage, dans le cas contraire, comptage et donc forcément, même si le script PHP est bouclé en double par le moteur de Chrome, vue la création du Cookie à la première boucle, la seconde incrémentation ne ce fait pas !
Tests ok, résultat probant, parfait pour mon besoin 🙂

Voici le script, rajouté dans mon functions.php, avec commentaires aidant à compréhension :

/* Function compteur de vue -- DEBUT */
// Récupérer le nombre de vue du post
function getPostViews($postID){
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
// Si le post n'à aucune vue existante dans la table post_meta alors la créer avec la valeur de 0 vue
if($count==''){
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
return "0";
}
return $count;
}

// Régler le nombre de vue du post
function setPostViews($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
// Vérification de l'existence d'un cookie ayant pour information l'ID du post, si il existe, ne rien faire, dans le cas contraire créer le cookie et rajouter 1 vue
if(isset($_COOKIE['postviews']) && $_COOKIE['postviews'] == $postID) {
} else {
// Création du cookie, en expiration à 60 secondes
setcookie('postviews', $postID, time()+60);
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);
}
}
}

// Remove issues with prefetching adding extra views
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

// Add to a column in WP-Admin
// Rajout des colonnes de vue sur la page admin des articles
add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2);
function posts_column_views($defaults){
$defaults['post_views'] = __('Views');
return $defaults;
}
function posts_custom_column_views($column_name, $id){
if($column_name === 'post_views'){
echo getPostViews(get_the_ID());
}
}

/* Function compteur de vue -- FIN */

Bien entendu, il convient ensuite de rajouter la fonction sur la page article ou post permettant de lancer le script, par exemple sur le fichier single.php (je n’ai rajouté que la ligne seetPostViews) =>

<?php
while ( have_posts() ) :
// update du nombre de vue
setPostViews(get_the_ID());
the_post();

Puis de renseigner le code dans la partie template prévue pour afficher les views, par exemple sur la page \template-parts\content.php =>

<i class="fas fa-eye"></i><?php echo getPostViews(get_the_ID()); if (getPostViews(get_the_ID()) > '1') { ?> <?php esc_html_e( 'vues', 'nomdevotretheme' ); } else { ?> <?php esc_html_e( 'vue', 'nomdevotretheme' ); };?>

Voilà, je n’ai rien fait d’exceptionnel, mais le fonctionnement final est exactement comme je le souhaitai, et ce petit article me servira de mémo au cas ou, alors si il profite à d’autres, tant mieux 😉

Zimbra ZCS – Installer un certificat SSL gratuit Letsencrypt sur la webmail

Procédure pour installation d’un certificat SSL gratuit, avec LetsEncrypt, sur la webmail Zimbra.

logo-letsencrypt

Documentation officielle :

https://wiki.zimbra.com/wiki/Installing_a_LetsEncrypt_SSL_Certificate

Et dans la suite ma routine personnelle 🙂

Mehr lesen»

Zimbra ZCS – Bloquer les envois d’email depuis des adresses non existante (non légitime)

Configuration Zimbra pour empêcher les emails de type spam exploitant le relais apache / postfix, pour envoyer des emails alors que la boite en question n’existe pas.

Voir référence “Rejection false mail from addresses” sur https://wiki.zimbra.com/wiki/Rejecting_false_%22mail_from%22_addresses

Dans la suite ma routine personnelle 🙂

Mehr lesen»

Zimbra ZCS – personnalisation de la webmail

Voici un petit mémo pour m’aider à reproduire les modifs de personnalisation sur ma webmail Zimbra.

Documentation utile officielle :

https://wiki.zimbra.com/index.php?title=Customizing_Themes_and_Adding_Zimbra_Powered_Logo_-_Open_Source_Edition
https://files.zimbra.com/docs/skins/Themes.html

Mehr lesen»

Zimbra ZCS bug – problème d’accès à la file d’attente (administration)

Petit article mémo pour un bug / problème bien chiant à régler, à savoir celui apparaissant dans l’administration du serveur sur la partie “file d’attente”

Menu latéral => Moniteur => Files d’attente

Le message d’erreur :

Mail : system failure: exception during auth {RemoteManager: zimbra.monnomdedomaine.fr->zimbra@zimbra.monnomdedomaine.fr:22} Code d’erreur : service.FAILURE Method: [unknown] Détails :soap:Receiver

Traduction de ce message, l’administration utilise un protocol d’accès aux stats / information en ce connectant en ssh sur l’utilisateur “zimbra”
La connexion échoue, généralement soit par un soucis de réglage, soit par un problème d’autorisation, soit un soucis de droits de fichier ou encore un soucis d’OS.

Cette page du wiki officiel permet de déboguer =>
https://wiki.zimbra.com/wiki/Mail_Queue_Monitoring

Mehr lesen»

SSH : Script de backup RSYNC automatisé en CRON

Voilà donc, j’ai voulu dépoussiéré un petit script utile que je me suis fait il y à quelques années et qui à pour but de faire un backup entre 2 serveurs dédiés sous Linux. Du coup je l’ai un peu modifié pour l’utilisation de différentes variables. Mehr lesen»

Hack Playstation 4 on peut vraiment jouer à des jeux “crackés” ?

Heyyyy voici un sujet qui risque bien d’attirer nombre de curieux !

La question est très simple : peut on enfin jouer à des jeux “crackés” (aussi appelés officiellement des “backups” de jeux) sur la Playstation 4 ?

Pas plus de suspens, je peux vous répondre direct OUIIIII !
En réalité ça fait déjà quelques mois, depuis à peu près mars 2017, mais comme je viens de m’y intéresser, je vous fait part de mes découvertes ^^

EDIT (décembre 2020) :

Un nouveau Jailbreak est disponible pour la version 6.72 des PS4, donc il est presque possible de cracker TOUTES les PS4 achetées neuve et donc jamais mise à jour.
Pour les versions d’occasion il faut qu’elles n’aient pas tournées depuis quelques temps et donc pas fait de mise à jour depuis juillet 2020.
Je n’ai pas l’occasion de retester la procédure sur une version plus récente, je vous laisse découvrir un lien anglais =>
https://wololo.net/ps4-jailbreak-ps4-cfw4dummies/

Pour celà il va falloir travailler un peu les z’amis, je vous avoue que ça n’à pas était de tout repos que de comprendre les différents points importants pour s’en sortir.

Alors venons en au fait, voyons voir comment réussir à faire tourner un jeux “cracké” sur votre petite Playstation 4 :

Mehr lesen»

Création d’une application Android / Webapp : Utiliser Phonegap Cordova avec Android Studio

Développeur, ou plutôt créateur dans l’âme, j’ai bien tenté de créer une application Android par le passé, mais j’étais confronté à un problème classique, le standard de programmation qui est en JAVA pur, et ce n’est clairement pas un langage que je maîtrise …

J’ai tout de même tenté en installation Eclipse, l’outil de développement JAVA, et j’ai fait quelques pas avec, jusqu’à réussir en partie mon application, mais c’était très laborieux, et ma marge de manœuvre pour améliorer cette application était très restreinte …

J’ai donc laissé ce projet de coté quelques temps, avant de retomber dans l’envie de refaire cette application, et surtout en trouvant le moyen de coder l’ensemble dans des langages que je maîtrise bien plus, à savoir le HTML, le CSS, et le Javascript !

Et oui, pendant longtemps j’ai compris qu’il était impossible de créer une application Android, ou IOS, sans passer par des languages natifs, ou simplement du JAVA pur … les recherches google ne me donnait que peu de possibilité … jusqu’au jour où j’ai compris que l’on peut tout à fait le faire avec des langages web 😀

Le concept est alors un peu différent, et pas aussi optimisé que le JAVA lui même, mais il suffit largement pour bien des cas d’applications !
Il s’agit en fait de développer une “Webapp”, une application nativement pensée pour le web, mais qui sera encapsulé dans une “Webview” JAVA.

Enfin pour faire simple c’est comme si on développé un site web orienté mobile (en particulier pour les interactions et les formats d’écrans) mais que ce site web final est encapsulé dans une application JAVA ultra-basique, tout ceci grâce au projet OpenSource Phonegap Cordova !

Voilà maintenant que la possibilité est ouverte, voyons comment débuter dans la mise en place des outils nécessaire à la création d’une première application !

Mehr lesen»

Serveur dédié Windows 2012 – FirstHeberg nouveau test 3 ans après – Life is Feudal

Bien bien bien …

Me revoilà face à un prestataire que je n’avais plus sollicité depuis des années !

Me revoilà dans les starting blocks pour tester les prestations de FirstHeberg 3 ans après

En effet, au plus fort de mon activité d’hébergeur de serveurs de jeux, sous le nom commercial de n1-servers.fr, j’avais fait appels à leur service, et j’avais publié un petit article qui encore en bonne position des recherches google pour ce faire un avis à leur sujet.

-> Retour d’expérience sur mon premier test de FirstHeberg.com

Dans le but de l’installation d’un nouveau serveur de jeux, sous Life is Feudal, pour une utilisation perso, j’ai un besoin d’un serveur dédié sous Windows ….
Oui le genre à être blasant, car clairement, pour des utilisations tel que serveur de jeux, un serveur Windows c’est pas le top coté optimisation, d’autant plus que j’ai déjà en ma possession d’autres serveurs dispo, mais sous Linux …

Mehr lesen»

Basculer son site web en HTTPS sans exception de sécurité (certificat SSL valide et gratuit – letsencrypt)

Bien, je me suis décidé à basculer mes sites internet en HTTPS et la route fut longueeeeeeeeeeeeee !
En effet, la configuration, du certificat en particulier, n’à pas était évidente 😡

Car pour avoir un site web fonctionnel sans exception de sécurité, gros message faisant bien peur au visiteur d’un site, cela passe par l’obtention d’un certificat SSL.

Le gros soucis avec le certificat SSL, c’est que c’est un service payant, assez onéreux …
Pour autant, on à de la chance, car grâce à un projet opensource, il est dorénavant possible de faire la certification gratuitement, rien que ça ! 😀

Alors bon, cool, c’est gratuit, mais pour autant ce n’est pas super simple, et il faut renouveler le certificat très régulièrement, et savoir bidouiller un minimum sur son serveur dédié.

Attention, la gratuité concerne des certificats de classe 1, fonctionnel de manière basique (non wilcard), suffisant dans la grande majorité des cas.

Donc si vous aussi vous avez envie de franchir le pas et que vous êtes prêt à vous lancer dans cette petite aventure, suivez le guide !
Mehr lesen»