Mise à jour : décembre 2021

Créer un site de rencontres sous WordPress

WordPress est un formidable outil conçu initialement pour les blogueurs et qui dispose d'excellentes qualités pour la création de sites généralistes. Ce n'est pas pour rien qu'il est devenu le CMS le plus utilisé au monde. Une quantité impressionnante de plugins permet de l'étendre à l'infini.

Pour créer un site de rencontres, WordPress est souvent conseillé en le gonflant avec de gros plugins de réseau sociaux. Malheureusement, le résultat devient facilement une usine à gaz avec trop de fonctions inadaptées et des fonctions manquantes nécessitant d'autres plugins. Des template payants sont proposés mais aucun plugin gratuit n'existe pour un site de rencontres. Nous en avons donc réalisé un. Il est sous licence GPL et il est régulièrement mis à jour sur WordPress et sur GitHub et disponible en télechargement directement ici : Plugin Rencontre.

Vous souhaitez créer votre site de rencontres sans dépenser un sous ? Suivez le guide.

Wordpress Plugin Rencontre

Structure du site :

  • Une page d'accueil en accès libre avec les affichettes des x derniers membres ;
  • Diverses pages en accès libre (contact, mentions légales...) ;
  • Une page de connexion ;
  • Une page accueil spécifique à chaque membre connecté avec les attributs d'un site de rencontres (portraits sélectionnés, nouveaux inscrits, anniversaires du jour, modifier mon profil, recherche, messagerie privée...) ;
  • Site "responsive" pour une utilisation sur smartphones et tablettes.

Fonctions souhaités :

  • Messagerie privée entre les membres ;
  • Tchat privé entre membres connectés ;
  • Tchat avec webcam ;
  • Connexion avec un compte Facebook ;
  • Pose de photos depuis un compte Facebook ;
  • Envoi de sourire à un membre ;
  • Affichage du nombre de visite, sourire, demande de contact reçu par un membre et renvoi vers les fiches concernées ;
  • Recherche rapide (pays, classe d'age) ;
  • Recherche détaillée (profil, photo, région...) ;
  • Recherche de proximité avec photo sur une GoogleMap ;
  • Signalement des membres douteux par les autres membres ;
  • Black list ;
  • Systême de profil multilingue sophistiqué et modifiable avec nombreuses questions et propositions ;
  • Envoi de mail automatique au format HTML personnalisé ;
  • Systême de newsletter manuel ;
  • Administration simplifiée ;
  • Nettoyage automatique et régulier de la base de données pour maintenir les performances ;
  • Site multilingue ;
  • Plugin personnalisable (pas de pays, modification des catégories, des textes...)

Architecture retenue :

  • Le système de connexion est d'inscription est celui de WordPress ;
  • Utilisation d'un framework CSS pour plus de compatibilité ;
  • De nombreux templates personnalisables pour permettre une adaptation ;
  • Utilisation des "hook" WordPress à de nombreux emplacements pour customiser le plugin ;
  • Optimisation du code et des requêtes BDD pour conserver un site réactif et utilisable avec un grand nombre de membres sur un serveur mutualisé.

Installation standard de WordPress en version FR à partir de la dernière version téléchargée sur wordpress.org.

Il est déconseillé d'utiliser un WordPress pré-installé par votre hébergeur. Cette solution est adaptée pour un blog mais inadaptée pour un site complexe. Plusieurs erreurs sont rapportées avec Rencontre et ce type d'installations. Par ailleurs, l'utilisation de WordPress en mode "multisite" n'est pas conseillée car la base de données utilisateurs de WordPress est partagée ce qui est une abération en matière de respect de la vie privée.

Activer le thème de votre choix. A notre connaisance, il n'y a pas de thèmes incompatibles avec Rencontre. En revanche, des adaptations CSS seront certainement à prévoir.

Activer le plugin Rencontre.

Une vidéo YouTube explique, sans son, comment installer le plugin rencontre avec le très beau thème Twenty Seventeen (2017) à partir de zéro :

 

Lors d'une mise à jour d'un thème depuis le tableau de bord de WordPress, la procédure est la suivante :

  • Téléchargement de la dernière version du thème ;
  • Suppression du dossier du thème en vigueur ;
  • Installation du nouveau dossier avec le thème téléchargé.

Donc, si vous avez modifié un thème, vos changements seront détruits lors de la mise à jour.

Pour éviter cela, il est fortement conseillé de créer un thème enfant (child themes). Nous ne détaillerons pas la procédure ici mais c'est relativement simple.

Il suffit d'ajouter le Shortcode [rencontre] dans la page de votre choix, dans Admin / Page.

Les options des shortcodes sont écrites en minuscules de la façon suivante : [rencontre_libre gen=mix city=london]

La liste des shortcodes disponible est la suivante :

  • [rencontre] : Affiche le plugin dans sa partie connectée. Un utilisateur non connecté ne vera rien.
  • [rencontre_libre] or [rencontre_libre gen=mix city=london] : Affiche la page "non-connectée" du plugin. Elle est invisible pour un membre connecté. Les options sont les suivantes :
    • gen : mix / gay / girl / men / mycustomgender. Mix veut dire autant de femmes que d'hommes (plus ou moins 2).
    • country : le code ISO à 2 lettres du pays à afficher exclusivement (fr).
    • region : la region à afficher exclusivement (aquitaine).
    • city : la ville à afficher exclusivement (bordeaux).
  • [rencontre_nbmembre] : Affiche le nombre d'utilisateurs en page non connectée. Les options sont les suivantes :
    • gen : girl / men
    • ph : 1. Uniquement avec photo.
  • [rencontre_search] : Affiche un bloc de recherche pour les visiteurs non-connectés. Les options sont les suivantes :
    • nb. C'est le nombre de résultats.
  • [rencontre_login] : Ajoute un lien de connexion / deconnexion / inscription. Il existe d'autres solutions plus intégrées telles que l'utilisation du menu Rencontre dans l'onglet Menu de WordPress.
  • [rencontre_loginFB] : Ajoute un lien de connexion via Facebook.
  • [rencontre_imgreg] : Affiche un bloc d'inscription sur l'image de la page d'accueil (IMGREG : ImageRegistration). Les options sont les suivantes :
    • title. Le titre de votre choix qui apparaitra en haut du bloc. Par exemple, "Inscription". (Voir l'image plus haut sur cette page)
    • selector. Le selecteur CSS de l'image sur laquelle le bloc doit apparaitre. Par exemple '.site-header .wp-custom-header img'. Si le sélecteur n'est pas bon, le bloc sera mal positionné ou invisible ! Chaque thème étant différent, à vous de vous adapter.
    • left. Marge gauche en pourcentage (2 chiffres) par rapport au conteneur parent désigné si dessus. Entre 00 to 99. Exemple : left=20.
    • top. Idem. Marge verticale par rapport au haut du conteneur.
  • WP GeoNames : Ce plugin très utile permet d'insérer sur son site une partie de l'immense base de données de lieu de global GeoNames. Lors de la frappe de la ville, Rencontre proposera une liste de villes commençant par les mêmes lettres. La position GPS du lieu sera également enregistrée. Rencontre dispose de filtres spécifiques pour ce plugin.
  • Email Templates : Ce plugin permet de personnaliser le design des emails. D'autres plugins existent. C'est quasiment indispensable.
  • Theme My Login : Ce plugin permet de créer une page de connexion "plus sexy" que la page par défaut de WordPress. D'autres plugins existent.

Connectez-vous en admin sur le tableau de bord WordPress

  • Onglet Pages. Ajouter une page ou modifier une page existante. Ajouter les shortcodes [rencontre][rencontre_libre]. Sauvegarder.
  • Onglet Rencontre - Général. Sélectionner la page ou vous venez de placer les shortcodes. Sauvegarder.
  • Onglet Apparence - Menus. Vous aurez besoin des liens de connexion / déconnexion / inscription. Vous pouvez utiliser le bloc Rencontre, à gauche qui contient ces boutons. Si vous disposez d'un plugin spécifique ou d'un autre moyen, passer cette étape.
  • Onglet Réglages - Général. Cocher "tout le monde peut s'inscrire". Le rôle par défaut doit être "Abonné".

C'est terminé. Il ne se passe rien en page d'accueil et c'est normal car il n'y a aucun membre à votre site et vous n'êtes pas connecté (l'ADMIN ne compte pas). Cliquez sur Inscription et donnez votre adresse mail et un login. Vous allez recevoir un mail pour finaliser l'inscription. Si vous êtes en Localhost, il n'y aura pas de mail. Vous devrez retourner en ADMIN dans la partie Utilisateurs pour changer le mot de passe de ce nouveau membre. Vous pourrez alors vous connecter directement avec ce nouveau mot de passe.

Un package de 20 membres vous facilitera la tâche pour les premiers réglages. L'installation se déroule de la façon suivante :

  • Télécharger le fichier zip contenant les 20 photos et le fichier CSV ;
  • Extraire le fichier sur votre PC ;
  • Envoyer par FTP le dossier "photo_import" dans "wp-content/uploads/tmp/"
  • Se connecter en Admin sur le site ;
  • Dans Rencontre/Général, en bas de page, parcourir : rencontre_import_20_profiles.csv ;
  • Cliquer sur "Importer en CSV" ;
  • Aller sur l'onglet Rencontre/Membres : les 20 membres sont bien présents.

Plugin Rencontre - Import en CSV

Ces profils fictifs ne doivent pas être utilisés sur un site en service. Les photos proviennent de 123RF avec une licence non commerciale.

Lorsque vous aurez quelques membres, votre site ressemblera à ça pour quelqu'un qui est connecté :

Rencontre page mon accueil

En page d'accueil, lorsque le visiteur n'est pas connecté, il a un aperçu des derniers membres inscrits (après quelques jours d'attente - paramètres en partie Admin). Pour être en page d'accueil les membres doivent avoir une photo, un titre et une annonce :

Rencontre pour un visiteur non connecté

 

Le tchat peut être désactivé si besoin. Ce tchat est moderne avec des smileys et une vidéo de webcam assez réactive.

Rencontre chat en cours

La messagerie privée est inspirée des applications de messagerie instantannées. Elle est très facile à utiliser. Lorsqu'un nouveau message privé arrive, un email est également envoyé.

Rencontre application de messagerie privée

La partie administration comporte 6 pages :

Une page "Général" pour tous les réglages du plugin.

Une page "Profil" pour éditer, modifier, supprimer ou compléter les grilles de profil.

Un profil par défaut est fourni avec le plugin pour ne pas avoir à démarrer de zéro.

Il est préférable de créer les profils lors de l'initialisation du site et de ne plus trop y toucher ensuite. Cela pourrait déplaire aux utilisateurs.

Admin Plugin Rencontre - Profil

Une page "Pays" pour éditer, modifier, supprimer ou compléter la liste des pays et les régions associées.

Chaque pays peut être traduit dans plusieurs langues et être associé à un fichier image pour le drapeau.

Admin Plugin Rencontre - Pays

Une page "Membres" pour administrer les membres.

Admin plugin Rencontre - Membres

Tous les membres sont listés sur un tableau. Il est possible de faire un tri par ID, par pays, par date d'inscription et d'autres valeurs. En cliquant sur l'ID, une page s'affiche avec l'ensemble des éléments du membre. Tout est modifiable, même les photos.

Il est également possible de rechercher un membre à partir de son email, son pseudo ou son ID.

La colonne signalement indique le nombre de membres qui ont trouvé douteux ce profil. Pour cela, ils ont cliqué sur le bouton "Signaler" du profil. C'est un bon indicateur de filtrage.

Rencontre - Signaler un profil douteux

Le bouton "Bloquer" ci-dessus permet à un membre d'empêcher à un autre membre d'interagir avec lui.

 

Détection des faux profilsLe drapeau du pays ou le profil a été créé apparaît sous l'adresse IP. Il est ainsi facile de filtrer ces profils potentiellement douteux et de prendre les mesures adaptées.

Trois différents niveaux de modération sont possibles :

  • Moyens de modération des membresBlocage,
  • blocage léger,
  • suppression du compte.

Le blocage (oeil vert/rouge) rend le membre invisible sur le site. Il n'apparaît plus dans les résultats de recherche. Il disparaît de l'historique des sourires et autres. Le membre a accès à sa fiche mais il ne peut plus interagir avec les autres membres. Ce blocage lui est signalé en permanence sous le menu.

Rencontre vous êtes bloqués

Le blocage léger (enveloppe verte/rouge) se contente d'empêcher l'utilisateur d'envoyer un message à un autre membre ou de répondre à un message. Ce blocage lui est signalé lors d'une tentative d'envoi de messages. Pour les autres membres, il reste visible comme n'importe qui et le blocage léger n'est pas signalé.

La suppression du compte (croix rouge) est irréversible. Toutes les données sont effacées du serveur. L'adresse mail et l'IP sont les seuls éléments conservés pour empêcher une nouvelle inscription. La durée de cette période de prison (cf onglet prison) est réglable dans l'onglet général.

Option d'Inscription Rapide Inscription rapide :

Cette option permet aux membres d'avoir un accès instantané au site sans devoir remplir les 4 pages de formulaires. C'est un bon moyen d'améliorer le pourcentage d'inscriptions réussies. Le fonctionnement est le suivant :

  • Accès direct au site après avoir choisi un login, une adresse mail, un mot de passe et une recherche (homme ou femme).
  • Ensuite, le membre dispose de 24 heures (48 en réalité) pour :
    • vérifier son email en cliquant sur le lien qu'il a reçu,
    • remplir sa partie compte (mon sexe, mon pays, ma date de naissance...).
  • Durant ce temps, il est invisible des autres membres et ne peut pas communiquer (msg, chat, sourire...). Il peut voir les autres membres et faire des recherches.
  • Dès que c'est fait, on retombe sur les règles du site et l’icône bleue (ci-dessus) disparaît.
  • Si les deux conditions ne sont pas remplies, le compte est automatiquement supprimé.

Une page "Prison" listant les membres sanctionnés pour contenu inadapté et dont le compte a été supprimé.

Une page "Custom" qui permet de personnaliser le plugin pour l'adapter à tous les besoins.

Les textes et données pré-enregistrés sont modifiables avec cet onglet. De nombreux aspects deviennent également optionnels (pays, date de naissance, taille, poids...). Enfin, il est possible d'effectuer une recherche avec deux éléments du profil personnalisé en recherche rapide (pour la recherche générale, c'est Premium).

La liste des fichiers de Template est affiché dans le dernier onglet de la page Custom. Elle vous rappelle ceux que vous avez personnalisés et s'ils sont à jour des dernières évolutions du plugin.

Une fois par jour, à l'heure choisie par l'administrateur dans l'onglet "Général", plusieurs opérations automatiques sont réalisées :

  • Suppression des lignes [_transient] inutiles qui s'accumulent dans la table options ;
  • Suppression des lignes [meta_value] des membres dans la table user_meta ;
  • Suppression des fichiers de Tchat et de Session ;
  • Suppressions diverses ;
  • Envoi du mail régulier (mensuel ou 15j ou 7j selon paramétrage) de synthèse de l'activité du compte vers 1/30 ieme (mensuel) des membres ;
  • Rafraichissement de la page d'accueil non connectée.

Ce maintient au strict minimum des données permet au plugin de rester performant avec un très gros nombre de membres.

Toutes les heures, en dehors de l'heure de maintenance quotidienne, une tâche automatique d'envoi de mail est initiée :

  • Envoi d'un mail vers les membres ayant reçu une demande de contact ;
  • Envoi d'un mail vers les membres ayant un nouveau message en boîte de réception.

La quantité de mail à envoyer par heure est limitée à la valeur entrée en partie Admin. Si le nombre de mail est supérieur, les mails sont mis en priorité pour l'heure suivante.

Le site doit être bilingue en front-end et en admin. Pour ça, pas de plugin. On passe par un cookie qui définira la langue de WordPress en tout début de chargement.

Mise en place des liens "drapeaux" FR et GB au dessus du titre. Ils activeront un cookie.

Dans votre thème, ouvrir header.php (si ce fichier existe) et insérer dans la partie NAV ce bloc LANG :

<nav id="site-navigation" class="navigation main-navigation" role="navigation">
    <div id="lang">
        <a href="" title="Français" onClick="javascript:document.cookie='lang=fr_FR'">
            <img src="<?php echo plugins_url('rencontre/images/drapeaux/France.png'); ?>" alt="Francais" width="18px" height="12px" />
        </a>
        <a href="" title="English" onClick="javascript:document.cookie='lang=en_US'">
            <img src="<?php echo plugins_url('rencontre/images/drapeaux/Royaume-Uni.png'); ?>" alt="English" width="18px" height="12px" />
        </a>
    </div>

Ajouter à style.css (tout en bas) :

#lang {float:left; margin:9px 10px 0 10px;}

Trop facile ! Et ça fonctionne en front-end et en admin.

Vous aurez probablement besoin de peaufiner un peu le design.

Ajouter les modifications nécessaires au fichier style.css, comme pour la partie login (para Connexion). Commencer chaque ligne par #widgRenc pour surpasser les styles par défaut. Par exemple :

#widgRenc a {text-decoration:underline;color:blue;}

Pour vous aider à trouver les ID (#) et / ou les classes (.), dans Firefox, clic droit sur la zone et "Examiner l'élément".

L'affichage et le design du plugin repose sur des fichiers de templates. Ils sont tous stockés dans /rencontre/templates/.

Avec un minimum de connaissance en HTML et CSS, il est possible de changer en profondeur l'aspect du plugin en modifiant des fichiers.

Attention, chaque mise à jour du plugin provoque la suppression du dossier /rencontre/ et son remplacement par la nouvelle version. Si vous avez effectuer des modifications, elles seront perdues. Ceci est également valable pour les thèmes. Il est donc recommandé d'utiliser un "Child-Theme" et de placer les fichiers de template modifiés dans ce theme, dans un dossier /templates/. Si le fichier est présent dans le thème, c'est celui-ci qui sera utilisé.

Le plugin Rencontre contient plusieurs filtres WordPress ("hook" ou "filters") permettant une modification plus poussée de son fonctionnement.

rencColor(array)

Ce filtre permet d'ajouter des couleurs personnalisées à la liste existantes qui est utilisée dans les templates.

Chaque nom de couleur doit également disposer de la couleur du texte, avec le nom terminé par la lettre T, car celle-ci peut être utilisée en background (voir ci-dessous).

Référence : /inc/rencontre_color.php.

function myRencColor($w3renc) {
  $myColors = array(
    'light-blue-d1' => '#69c2e6', 'light-blue-d1T' => '#000',
    'light-blue-d2' => '#4ab6e0', 'light-blue-d1T' => '#fff',
    'light-blue-d3' => '#2aa9db', 'light-blue-d1T' => '#fff',
    'mon-autre-couleur' => '#123456', 'mon-autre-couleurT' => '#303030'
  );
  return $w3renc + $myColors;
}
add_filter('rencColor', 'myRencColor', 10, 1);

rencImgSize(array)

Ce filtre permet de modifier la dimensions des photos et d'en créer de nouvelles.

Le label doit systématiquement commencer par un tiret.

Les photos déjà existantes ne seront pas modifiées. En cas de changement, il faudra régérérer les photos des membres.

Référence : inc/rencontre_filter.php - fonction rencPhotoSize()

function myRencImgSize($size) {
  // 1. Modification des photos "-grande"
  foreach($size as $k=>$v) {
    if($v['label']=='-grande') $size[$k] = array('label'=>'-grande', 'width'=>300, 'height'=>300, 'quality'=>75);
  }
  // 2. Ajout du format "-wide"
  $size[] = array('label'=>'-wide', 'width'=>400, 'height'=>180, 'quality'=>70);
  //
  return $size;
}
add_filter('rencImgSize', 'myRencImgSize', 10, 1);

rencImgFullSize(array)

Ce filtre permet de modifier la dimension de l'image de référence créée à partir de l'originale fournie par le membre. Cette image est en effet réduite si sa taille est supérieure aux valeurs fixées.

Par défaut, la taille maximale est 1280 x 960.

Référence : inc/rencontre_widget.php - fonction f_photo()

function myRencImgFullSize($max) {
  $max = array(900,675);
  return $max;
}
add_filter('rencImgFullSize', 'myRencImgFullSize', 10, 1);

rencNumbers(array)

Ce filtre permet de modifier un certain nombre de valeurs. Nom-de-la-valeur (valeur par défaut).

  • featured (8) : Nombre de portraits sélectionnés dans ma page d'accueil.
  • featuredDayOld (60) : Date de dernière connexion des portraits sélectionnés plus récente que le chiffre indiqué en jour - 0 pour supprimer ce critère.
  • birthday (4) : Nombre max d'anniversaires du jour dans ma page d'accueil.
  • online (16) : Nombre max de membres en-ligne dans ma page d'accueil.
  • new (12) : Nombre max de nouveaux membres dans ma page d'accueil.
  • action (50) : Nombre max d'action. Au délà, les plus anciennes valeurs sont supprimées.
  • searchResultAd (300) : Nombre de lettres dans la description du membre en résultat de recherche.
  • mailSelection (4) : Nombre de portraits sélectionnés dans le mail régulier.
  • mailUserPerLine (2) : Nombre de portraits par ligne dans le mail régulier. (Format TABLE TR TD).
  • lengthTitle (30) : Nombre de lettres max dans le titre sur un mini-portrait.
  • lengthNameHome (50) : Nombre de lettres max pour le nom sur la page d'accueil.
  • lengthName (50) : Nombre de lettres max pour le nom aux autres emplacements (recherche, profil, messagerie).
  • infochange (5000) : Durée d'affichage du bandeau d'information après une action (sourire, sauvegarde...) - Unité : ms.
  • rencmodaltimeout (4000) : Durée d'affichage des fenêtres modales d'avertissement - Unité : ms.
  • delNotConfirmed (60) : Durée avant suppression d'un compte vide ou dont l'email n'est pas confirmé (Fast Registration) - Unités : heures.
  • imgQuality (75) : Qualité des images JPG créées depuis les images des membres - Unités : pourcentage.
  • msgnotifloopP (30) Premium : Vérifications en boite de réception toutes les xx - Unité : seconde.
  • msgnotifstartP (120) Premium : Délais d'attente avant lancement de la vérification (msgnotifloopP) après chargement page - Unité : seconde.
  • msgnotifbipP (0) Premium : Bip pour notification de nouveau message - Valeur : 0=bip, 1=pas de bip.
  • mapkm (30) Premium : Rayon de recherche autour de la position sélectionnée sur la carte - Unité : km.
  • urlNoCryptId (0) : Empêche le cryptage de l'ID du membre dans l'URL si la valeur est 1 (ID en clair).
  • visiteUpdateTime (0) : La date de la visite est sauvegardée si la valeur est 1.
  • smileUpdateTime (0) : La date du sourire est sauvegardée si la valeur est 1 ou 2. Affiche "déjà envoyé" (si c'est le cas) si la valeur est 0 ou 2.
  • cronBenchmark (0) : Envoi d'un mail de benchmark vers ADMIN lors de la phase de maintenance si la valeur est 1.
  • flagPng (0) : Force l'affichage des drapeaux en PNG (ancien mode) au lieu du SVG si la valeur est 1.

Il permet également de modifier les variables Rencontre $rencOpt, $renDiv et $rencCustom enregistrées en partie Admin. Il suffit d'utiliser la même clef.

 Référence : inc/rencontre_filter.php - fonction rencNumbers()
 

function myRencNumbers($nb) {
  $nb['featured'] = 12;
  $nb['featuredDayOld'] = 0;
  $nb['action'] = 300;
  $nb['npa'] = 150; // $rencOpt['npa'] : nbr portrait accueil
  return $nb;
}
add_filter('rencNumbers', 'myRencNumbers',10,1);

rencLabels(array)

Ce filtre permet de modifier le nom des variables d'URL comme "renc", "account"...

Les variables suivantes peuvent être modifiées :

'renc', 'rencfastreg', 'rencoo', 'rencii', 'rencidfm', 'id', 'card', 'edit', 'msg', 'account', 'gsearch', 'liste', 'qsearch', 'write', 'sourire', 'demcont', 'signale', 'bloque', 'favoriAdd', 'favoriDel', 'sex', 'zsex', 'z2sex', 'homo', 'ageMin', 'ageMax', 'tailleMin', 'tailleMax', 'poidsMin', 'poidsMax', 'mot', 'pseudo', 'pagine', 'pays', 'region', 'ville', 'relation', 'profilQS', 'line', 'photo', 'profil', 'astro', 'gps', 'km', 'fin', 'paswd'.

Référence : inc/rencontre_filter.php - fonction rencLabels()

function myRencLabels($lb) {
  $lb['renc'] = 'tab';
  $lb['card'] = 'fiche';
  $lb['write'] = 'ecrire';
  $lb['sex'] = 'genre';
  return $lb;
}
add_filter('rencLabels', 'myRencLabels',10,1);

rencTemplateDir(array)

Ce filtre permet de modifier le chemin à suivre pour accéder au dossier des templates et au dossier CSS. C'est un moyen de créer un plugin maison avec ses propres templates. Voir les détails plus bas.

Le tableau contient 4 valeurs. Vous pouvez choisir lesquelles personnaliser (pas les CSS dans l'exemple ci-dessous) :

  • path : Chemin absolu du dossier de templates : Par défaut : ---/rencontre/templates/
  • url : URL du dossier de templates : Par défaut : ---/rencontre/templates/
  • csspath : Chemin absolu du dossier de css : Par défaut : ---/rencontre/css/
  • cssurl : URL du dossier de CSS. Par défaut : ---/rencontre/css/

Référence : inc/rencontre_filter.php - fonction rencTplDir()

function myRencTemplateDir($tpl) {
  // Cible vers mon plugin myRencontre
	$arg ['path'] = realpath(__DIR__).'/templates/';
	$arg ['url'] = plugins_url('myRencontre/templates/');
	//$arg ['csspath'] = realpath(__DIR__ . '/..').'/css/';
	//$arg ['cssurl'] = plugins_url('myRencontre/css/');

return $tpl;
}
add_filter('rencTemplateDir', 'myRencTemplateDir',10,1);

rencFicheLibre(array,$output)

Ce filtre permet d'ajouter du contenu HTML à la partie "Fiche Libre" qui s'affiche en page non-connectée.

Le tableau d'entrée contient les éventuelles variables du shortcode (genre, pays, region et ville). La variable $output contient la sortie HTML fabriquée par Rencontre. La variable de sortie doit contenir la nouvelle sortie HTML.

Si ce filtre est en vigueur, les fichiers CSS w3.css et rencontre.css ne sont pas ajoutés à la sortie.

Référence : rencontre.php - fonction f_ficheLibre()

function myRencFicheLibre($args, $out) {
  $top = '<link rel="stylesheet" href="'.plugins_url('rencontre/css/w3.css').'" />';
  $top .= '<link rel="stylesheet" href="https://unpkg.com/picnic">';
  $top .= '<div class="w3-container"><h1>Liste du jour</h1>';
  $bottom = '</div><!-- .w3-container -->';
  return $top . $out . $bottom;
}
add_filter('rencFicheLibre', 'myRencFicheLibre',10,2);

rencNoFontawesome

Si ce filtre existe, Font Awesome n'est pas chargé par Rencontre. C'est utile si votre thème le charge déjà ou si vous ne souhaitez pas l'utiliser.

Référence : inc/rencontre_filter.php - fonction rencCssJs()

function myRencNoFontawesome() { }
add_filter('rencNoFontawesome', 'myRencNoFontawesome',10,0);

rencWidget

Dans sa version 1, le plugin Rencontre était utilisé sous forme de widget. Ce n'est plus le cas mais cette possibilité existe toujours. Si vous souhaitez toujours que Rencontre soit accessible sous forme de widget WordPress, activer ce hook pour qu'il retourne TRUE.

Référence : rencontre.php - fonction rencwidget()

function myRencWidget() {
  return true;
}
add_filter('rencWidget', 'myRencWidget',10,0);

rencInitHook

Ce filtre est executé à l'initialisation de WordPress (init), en tout début de plugin. C'est le moyen prévu pour traiter des données ajoutées à un formulaire tel que la recherche ou mon compte. Il ne fonctionne que pour un utilisateur connecté.

Référence : rencontre.php - fonction rencwidget()

function myRencInitHook() {
  // le code dont j'ai besoin (validation, enregistrement en BDD...)
}
add_filter('rencInitHook', 'myRencInitHook',10,0);

rencUserDel(id)

Ce filtre est executé en fin de suppression d'un membre, lorsqu'il n'existe plus en BDD. C'est valable pour le membre et pour l'ADMIN. Si des éléments supplémentaires sont ajoutés aux membres, c'est ici qu'il faut les supprimer.

Référence : inc/rencontre_filter.php - fonction f_userSupp()

function myRencUserDel($id) {
  // le code à executer pour l'utilisateur $id
}
add_filter('rencUserDel', 'myRencUserDel',10,0);

rencUserDelMailContent(array)

Ce filtre est utilisé en ADMIN. Il permet de modifier le contenu du email envoyé à un membre lors de sa radiation et de modifier ou d'ajouter des motifs à cocher par l'ADMIN.

Le tableau contient trois éléments :

  • title : L'objet du message
  • content : le contenu du message
  • case : tableau contenant les différents motifs. Par défaut, il y en a 9 {Fake, Fake (photo), Fake (profil)...}

Référence : inc/rencontre_filter.php - fonction rencModerType()

function myRencUserDelMailContent($typ) {
  // 1. Changement du contenu du mail
  $typ['content'] = "Nous sommes au regret de vous annoncer que vous avez été radié de nos membres.";
  // 2. Ajout d'un cas
  $typ['case'][] = "Mauvaise utilisation de la messagerie";
  return $typ;
}
add_filter('rencUserDelMailContent', 'myRencUserDelMailContent',10,1);

rencJsLang(array)

Ce filtre permet d'ajouter et de modifier les traductions affichées directement depuis le JavaScript.

Le fichier contenant la variable à modifier est rencontre/lang/rencontre-js-lang.php.

Référence : /inc/rencontre_widget.php.

function myRencJsLang($lang) {
  $lang['mauvais_pseudo'] = "Ce pseudo n'est pas autorisé";
  $lang['tchat_attendre'] = "La demande de Chat est transmise. Merci de patienter...";
  return $lang;
}
add_filter('rencJsLang', 'myRencJsLang', 10, 1);

rencUserPost(post/get, source)

Ce filtre permet de modifier les données entrées par l'utilisateur avant qu'elles ne soient traitées. Par exemple, filtrer certains mots des messages envoyés vers d'autres membres, filtrer des mots de son profil, empêcher certaines recherches...

Référence : /inc/rencontre_widget.php.

La variable "source" permettent de cibler une partie spécifique des données :

  • sauvProfil : Formulaire de modification du profil.
  • updateMember : Formulaire de modification du compte.
  • sendMsg : Contenu d'un message envoyé.
  • quickFind : Formulaire de recherche rapide.
  • find : Formulaire de recherche approfondie.
function myRencUserPost($post,$src='') {
  if($src=='sendMsg') {
    if(isset($post['contenu'])) {
      $post['contenu'] = str_replace('skype', '', $post['contenu']);
    }
  }
  return $post;
}
add_filter('rencUserPost', 'myRencUserPost',10,2);

Les fonctions suivantes peuvent être utilisées directement dans les templates pour obtenir des informations non disponibles par défaut sur un membre. Elles peuvent aussi être appelées depuis une autre fonctions.

Référence : inc/rencontre_filter.php

rencGetUser(id)

Retourne le contenu des tables rencontre_users et rencontre_users_profil à l'exceptions des champs t_profils, t_actions et t_signal.

<?php $rencUser = rencGetUser($u->ID); ?>
<div class="w3-card w3-renc-blbg">
  <div class="w3-container">
    <div class="w3-section">
      <?php echo $rencUser->t_annonce; ?>
    </div>
  </div>
</div>

rencGetUserPhotos(id)

Cette fonction retourne un tableau contenant la liste des photos disponibles pour un membre donné (id). Pour chaque photo, la fonction retourne un tableau contenant chacun des formats disponibles. Enfin, pour chacun des formats, les objects suivants sont disponibles : { label, url, path }.

<?php $photos = rencGetUserPhotos($u->ID); ?>
<div class="w3-card w3-renc-blbg">
  <div class="w3-container">
    <div class="w3-section">
      <?php foreach($photos as $photo) foreach($photo as $p) {
        if($p->label=='-mini') echo '<img src="'.$p->url.'" alt="" />';
      } ?>
    </div>
  </div>
</div>

rencGetUserProfils(id,pays)

Cette fonction retourne un tableau contenant la liste des profils enregistrés pour un membre donné (id) dans une langue donnée (pays). Si la langue est fournie, elle doit être au format ISO sur 2 lettres. Par défaut, c'est la langue du système.

Le tableau retourné contient les objects suivants pour chacun des profils renseignés : id, categ_id, categ, label_id, label, type, gender et value.

<?php $profil = rencGetUserProfils($u->ID,'fr'); ?>
<div class="w3-card w3-renc-blbg">
  <div class="w3-container">
    <div class="w3-section">
      <?php foreach($profil as $p) {
        echo $p->categ.' - '.$p->label.' : '.$p->value.'<br />';
      } ?>
    </div>
  </div>
</div>

 

Les modifications au plugin Rencontre peuvent être ajoutés au thème. C'est la méthode classique. Les fonctions et les filtres sont alors ajoutées au fichier functions.php et les templates sont placés à la racine du thème dans un dossier /templates/.

Cependant, si les modifications sont importantes, pour plus de clarté, il est préférable de créer un plugin spécifique pour ces modifications :

Dans un dossier du nom de votre plugin (myrencontre pour l'exemple), placer un fichier PHP nommé comme le dossier (myrencontre.php). Ajouter un dossier /templates/ et un dossier /css/. Placer le tout dans /wp-content/plugins/.

Contenu du fichier myrencontre.php :

<?php
/*
Plugin Name: My Rencontre
Description: Ajout de fonctions au plugin Rencontre
Version: 1.0
Author: Prenom Nom
Author URI: http://www.monsite.fr
License: GPL
Copyright: Prenom Nom
*/

function myRencTemplateDir($tpl) {
  $tpl = array(
    'path' => realpath(__DIR__ . '/..').'/templates/',
    'url'  => plugins_url('myrencontre/templates/'),
    'csspath' => realpath(__DIR__ . '/..').'/css/',
    'cssurl'  => plugins_url('myrencontre/css/')
  );
return $tpl;
}
add_filter('rencTemplateDir', 'myRencTemplateDir',10,1);

// Mes fonctions et mes filtres...
?>

 

Différence entre les sourires et les demandes de contact

C'est inspiré du monde réel. Le sourire est enregistré en base de données. il est accessible par les deux membres avec les liens "A qui j'ai souri" et "Sourire".

La demande de contact est également enregistrée en base de données. Elle est également accessible par les deux membres avec les liens "A qui j'ai demandé un contact" et "Demandes de contact". La demande de contact provoque l'envoi dans l'heure d'un email de demande de contact.

Le mot "Sourire" peut être remplacé par un autre dans l'onglet Custom.

Fonctionnement des emails automatiques

Le système d'envoi automatique d'emails est conçu pour ne pas dépasser un certain quota horaire. Chez OVH en mutualisé, par exemple, le maximum est de 200 messages par heures. Il faut distinguer trois catégories d'emails :

  • Les emails rapides. Ce sont les demandes de contact et les annonces d'un message personnel sur le site. Ce sont des messages qui partent toute la journée sauf durant le créneaux d'heures creuses. Il y a un envoi par heure avec un message au maximum par adresse mail.
  • Les emails de synthèse que tous les membres reçoivent. Ils sont envoyés à l'heure creuse et à l'heure creuse + 1h. Ils peuvent être mensuels, bimensuels ou hebdomadaires. Ils comportent une liste de nouveaux membres correspondants aux critères de recherche, la liste des membres ayant fait un sourire, la liste des membres ayant demandés un contact, le nombre de membres ayant visité le profil et le nombre de message non-lus dans la boîte de réception. Il y a également un petit message paramétrable en partie Admin.
  • Les emails pour souhaiter un bon anniversaire. Ils sont envoyés à tous les membres concernés en même temps que les emails de synthèse. Le texte est paramétrable en Admin.

Si le quota est dépassé, l'envoi du email rapide est reporté sur l'heure suivante et il devient prioritaire. Dans le cas des emails de synthèse, les membres sont répartis de façon homogène sur la période choisie afin d'avoir à peu près le même nombre d'envoi tous les jours en heures creuses.

Les membres présentés dans les emails disposent d'un lien direct vers leurs fiches sur le site. La connexion est automatique.

Les membres n'apparaissent pas en page d'accueil

Il y a un nombre de jour d'attente avant d'apparaître en page d'accueil. Ce chiffre est paramétrable en partie Admin. Pour être en page d'accueil, un membre doit avoir une photo, un titre et une annonce d'au moins 30 caractères.

A quoi sert le bouton "signaler"

Il incrémente un compteur de doute pour ce membre. Seul l'administrateur a accès à cette information.

Pourquoi les membres du site de rencontre n'ont pas de rôle dans WordPress ?

Pour chaque nouveau membre du plugin Rencontre, les droits WordPress sont supprimés. Si vous tentez d'en rajouter, ils seront automatiquement supprimés à nouveau. Ce choix technique permet d'augmenter la sécurité du site et de maintenir un bon niveau de performance avec une très grande quantité de membres. Certains plugins pourront être incompatibles avec ce fonctionnement.

Une case à cocher en Admin permet d'éviter cette suppression.

Que faut-il inclure comme données avec WP_GEONAMES ?

  • Colonnes : le minimum est name, latitude, longitude, country code, feature class et code.
  • Type de données : uniquement P (villes).

 

Un kit premium est disponible depuis la sortie de la V1.6 du plugin. Il ajoute plusieurs fonctions intéressantes :

  • Un système de paiement sophistiqué pour les membres avec création de différents groupes (Silver, Gold...) pouvant chacun être défini en catégorie par 20 critères (nombre de photo, chat, recherche avancée...) et différents prix selon la durée de validité ;
  • La possibilité de réserver une catégorie à un ou plusieurs sexe ;
  • La possibilité d'utiliser toutes les passerelles de paiement disponibles pour WooCommerce (des centaines) ;
  • Un système de promotion permanent (femmes), d'accueil (nouveaux membres) et à la demande (période "portes ouvertes") ;
  • Une recherche en fonction des éléments sélectionnés dans le profil (musique, sport...) ;
  • Un mur d'images pour une modération des photos des membres vraiment aisée ;
  • Une surveillance des messages envoyés par les membres signalés (très instructif pour modérer le site) ;
  • La possibilité de flouter les photos pour les membres ne remplissant pas les conditions ;
  • Une recherche par affinité astrologique assez poussée ;
  • Un blocage des membres par IP (liste noire) et un filtrage par pays (IP) suivant liste noire ou blanche ;
  • Des emplacements pour des publicités Google AdSense afin de rentabiliser son site.

Télechargement et détails du kit Premium.

Paypal DonationTélécharger le plugin Rencontre.

Buy Me A Coffee