Prise en main de WordPress

De Analyse Développement Hacking
Sauter à la navigation Sauter à la recherche
Consulter le wiki : Accueil du wiki - Objectifs - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack
Consulter le site : Accueil du site - Annuaire - Blog - Forum - Outils - Utilisateur     Consulter le Redmine : Accueil du Redmine

Sommaire

Prise en main de WordPress

Accessibilité

Rendre WordPress accessible :
Source : https://make.wordpress.org/accessibility/page/3/

Base de données Wordpress

Les 12 tables par défaut de WordPress

wp_commentmeta : Stocke les meta informations sur les commentaires.
wp_comments : Stocke les commentaires des articles et pages.
wp_links : Regroupe tous les liens de l'ancien onglet Liens dans l'administration de WordPress, utile pour des anciennes versions.
wp_options : Stocke les configurations générales du site, notamment celles renseignées durant son installation.
wp_postmeta : Liée à la table wp_posts, cette table regroupe des informations complémentaires en rapport avec les pages et articles.
wp_posts : Stocke les données sur les posts, pages, médias (images, docs pdf et vidéo), ou encore les produits des extensions E-commerce.
wp_terms : Stocke les étiquettes (mots-clés). Cette table est en lien avec la taxonomie de WordPress, wp_term_relationships et wp_term_taxonomy.
wp_termmeta :
wp_term_relationships : Permet l'association des étiquettes (mots-clés, tags) avec les articles et pages. En lien avec la table précédente et la table suivante.
wp_term_taxonomy : On y retrouve des informations complémentaires concernant les éléments de taxonomie pour leur différentiation.
wp_usermeta : Stocke la configuration des utilisateurs, leur rôle, les informations complémentaires.
wp_users : Stocke les utilisateurs, leurs noms, leur mot de passe, l'adresse mail.

Les requêtes SQL pour nettoyer la base de données de WordPress

Supprimer les révisions des articles de la base de données de WordPress

# Exemple pour supprimer les révisions des articles de la base de données de WordPress :
DELETE FROM wp_posts WHERE post_type = 'revision';
# Préférer cette seconde méthode :
DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'
# Préférer cette troisième méthode plus précise encore qui prend également en compte les éléments liés dans la table term_taxonomy.
DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp_term_taxonomy d ON ( b.term_taxonomy_id = d.term_taxonomy_id)
WHERE a.post_type = 'revision'
AND d.taxonomy != 'link_category';

Supprimer les sauvegardes automatiques des pages et articles

# Dans la même table, on peut supprimer les sauvegardes automatiques de pages et d'articles :
DELETE FROM wp_posts WHERE post_status = 'auto-draft';

Nettoyer la table wp_options

DELETE FROM `wp_options` WHERE `option_name` LIKE ('_transient_%');
DELETE FROM `wp_options` WHERE `option_name` LIKE ('_site_transient_%');
# Plus globalement :
DELETE FROM `wp_options` WHERE `option_name` LIKE '%transcient%';
Source : https://www.seomix.fr/transient-wordpress/

Supprimer les commentaires marqués en spam

DELETE FROM wp_comments WHERE comment_approved = 'spam';
# Supprimer les commentaires non approuvés :
DELETE from wp_comments WHERE comment_approved = '0';
0 = En attente de modération
1 = Approuvé
spam = Marqué comme spam

Supprimer les Metas des articles après suppression d'un plugin

# Suite à la suppression d'un plugin certaines informations restent en base de données.
# Supprimer les plugins qui ne sont plus utilisés : https://wp-rocket.me/blog/wordpress-plugins-many/
DELETE FROM wp_postmeta WHERE meta_key = 'META-KEY-NAME';

Supprimer les Pingbacks et les Trackbacks

# A revoir :
Does anyone use pingbacks or trackbacks anymore? Use these two queries to remove data for both pingbacks and trackbacks from your site.
# Supprimer les pingbacks de WordPress :
DELETE FROM wp_comments WHERE 'comment_type' = 'pingback';
# Supprimer les trackback de WordPress :
DELETE FROM wp_comments WHERE comment_type = 'trackback';
Make sure you've disabled pingbacks and trackbacks before running these queries !
Source : https://wpformation.com/requetes-sql-utiles-wordpress/
Source : http://sebastienbosquet.com/862/25-requetes-sql-WordPress-queries/
Source : https://wpchannel.com/wordpress/tutoriels-wordpress/22-requetes-mysql-indispensables-wordpress/
Maîtriser les transients pour optimiser votre site : https://wpformation.com/transients-wordpress/

Identifier les Tags inutilisés

# Voici comment identifier les tags non utilisés sur votre WordPress :
SELECT * From wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;

Nettoyer la table wp_commentmeta utilisée par Askimet

# Vérifier la table wp_commentmeta pour Askimet :
SELECT *
FROM wp_commentmeta
WHERE meta_key LIKE '%akismet%'
# Nettoyer la table wp_commentmeta :
DELETE FROM wp_commentmeta
WHERE comment_id NOT IN (
SELECT comment_id
FROM wp_comments);
# Nettoyer la surchage Askimet dans la table wp_commentmeta :
DELETE FROM wp_commentmeta
WHERE meta_key LIKE '%askimet%'

Optimiser une table

OPTIMIZE TABLE le_nom_de_la_table

Requêtes SQL pour la maintenance de WordPress

Changer le nom d'administrateur Admin

# Chaque installation de WordPress crée un compte avec un nom d'utilisateur "Admin" par défaut. Cela peut être un problème de sécurité car un pirate peut facilement forcer le compte admin de WordPress.
UPDATE wp_users SET user_login = 'Votre-Nouveau-Login' WHERE user_login = 'Admin';

Changer l'ID administrateur

UPDATE wp_users SET ID = 5487 WHERE ID = 1;
UPDATE wp_posts SET post_author = 5487 WHERE post_author = 1;
UPDATE wp_comments SET user_id = 5487 WHERE user_id = 1;
UPDATE wp_usermeta SET user_id = 5487 WHERE user_id = 1;
ALTER TABLE wp_users AUTO_INCREMENT = 5488
# Pour un WordPress multisite, dupliquer autant de fois que nécessaire les deux lignes suivantes :
UPDATE wp_2_posts SET post_author = 5487 WHERE post_author = 1;
UPDATE wp_2_comments SET user_id = 5487 WHERE user_id = 1;

Changer le mot de passe d'un utilisateur

# Pour changer ou de réinitialiser un mot de passe utilisateur dans WordPress :
UPDATE wp_users SET user_pass = MD5( 'nouveau_mot_passe' ) WHERE user_login = 'Nom-utilisateur';

Assigner tous les articles de l'auteur A à l’auteur B

UPDATE wp_posts SET post_author = 'nouvel-auteur-ID' WHERE post_author = 'ancien-auteur-ID';

Chercher et remplacer du contenu dans les articles WordPress

# Pour remplacer facilement un contenu par un autre :
UPDATE wp_posts SET 'post_content' = REPLACE ('post_content', 'Ancien_Texte', 'Nouveau_Texte');

Exporter les mails des commentateurs

# Récupérer les adresses mails des commentateurs de votre blog :
SELECT DISTINCT comment_author_email FROM wp_comments;

Désactiver les commentaires pour les vieux articles

# Pour nez plus avoir à modérer les commentaires de vos vieux articles, désactiver les commentaires de ces derniers en fonction d'une date :
UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2012-01-01'

Désactiver tous vos plugins WordPress

# Une requête permettant de désactiver l'ensemble de vos plugins :
UPDATE wp_options SET option_value =  WHERE option_name = 'active_plugins';

Réparer les caractères illisibles

# Vous avez des problèmes d'encodage de caractères ?
# Au lieu de nettoyer les articles et commentaires un par un, lancer les requêtes suivantes pour les remplacer.
UPDATE wp_posts SET post_content = REPLACE(post_content, '“', '“');
UPDATE wp_posts SET post_content = REPLACE(post_content, '”', '”');
UPDATE wp_posts SET post_content = REPLACE(post_content, '’', '’');
UPDATE wp_posts SET post_content = REPLACE(post_content, '‘', '‘');
UPDATE wp_posts SET post_content = REPLACE(post_content, '—', '–');
UPDATE wp_posts SET post_content = REPLACE(post_content, '–', '—');
UPDATE wp_posts SET post_content = REPLACE(post_content, '•', '-');
UPDATE wp_posts SET post_content = REPLACE(post_content, '…', '…');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '“', '“');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '”', '”');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '’', '’');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '‘', '‘');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '—', '–');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '–', '—');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '•', '-');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '…', '…');

Supprimer et/ou remplacer un Shortcode dans lrd articles

# Les shortcodes WordPress c'est toujours pratique mais quand on change son thème WordPress, il arrive parfois qu'ils ne soient plus compatibles.
# La requête suivante permet de supprimer ou remplacer vos Shortcodes caduques.
UPDATE wp_post SET 'post_content' = REPLACE ('post_content', '[AncienShortcode]', 'Rien ou NouveauShortcode' ) ;

Changer le chemin des images

# Vous avez décidé d'utiliser un CDN tel que Amazon, utiliser la requête suivante pour changer le chemin de vos images vers le CDN.
UPDATE wp_posts SET post_content = REPLACE (post_content, 'src="https://www.anciensiteurl.com', 'src="https://votrecdn.nouveausiteurl.com');
# Il faudra également changer le GUID des images jointes :
UPDATE wp_posts SET  guid = REPLACE (guid, 'http://www.anciensiteurl.com', 'http://votrecdn.nouveausiteurl.com') WHERE post_type = 'attachment';

Optimiser la base avec un plugin

WP-Optimize : https://wordpress.org/plugins/wp-optimize/
WP-Sweep : https://wordpress.org/plugins/wp-sweep/
WP-clean-up : https://wordpress.org/plugins/wp-clean-up/
Source complémentaire : https://wordpress.org/plugins/wp-optimize/

Configurer le fichier functions.php

Cacher le numéro de version de WordPress

remove_action("wp_head", "wp_generator");

Cacher les erreurs de connexion

add_filter('login_errors',create_function('$a', "return null;"));

Masquer le message des erreurs de connexion

# La page de connexion affiche des messages d'erreurs trop précis.
# Il est possible de masquer ces messages d'erreur en ajoutant avec la ligne :
add_filter('login_errors', '__return_null');

Configurer le fichier wp-config.php

Changer l'adresse URL du site

define('WP_SITEURL', 'http://newdomain.com');
define('WP_HOME', 'http://newdomain.com');

Vider la corbeille automatiquement tous les X jours

define('EMPTY_TRASH_DAYS', X );

Arrêter les révisions des articles et pages de WordPress

define('WP_POST_REVISIONS', false );

Limiter les révisions des articles et pages de WordPress au nombre de X

define('WP_POST_REVISIONS', X );

Désactiver l'éditeur de fichiers

# Le premier outil qu'un hacker utilisera une fois sur votre site c'est le panneau d’administration de WordPress.
# Depuis ce panneau, un administrateur a la possibilité de modifier tous les fichiers du site depuis l'éditeur, il peut donc exécuter du code malveillant.
# Désactiver cette possibilité en ajoutant cette ligne dans le fichier de configuration :
define('DISALLOW_FILE_EDIT', true);

Désactiver les erreurs PHP

define ('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);
# La ligne "define('WP_DEBUG_DISPLAY', false);" revient à ajouter la ligne suivante dans le fichier .htaccess :
php_flag display_errors off

Définir des clefs de sécurité dans le fichier wp-config

En enlevant les clés du fichier, WordPress enregistrera les clés en base de données.
Dès lors, si les accès sont bien protégés, les clés ne seront pas lisible.
A suivre.

Configurer l'adresse mail expéditeur de WordPress

WordPress ne permet pas de configurer l'adresse mail expéditeur des mails qu'il envoie.
Il construit l'adresse mail avec wordpress@www.domain.tld, une adresse qui n'existe probablement pas et ne respecte donc pas les normes RFC.
- 3.3 Transactions (page 18) :
- The first step in the procedure is the MAIL command.
- MAIL FROM:<reverse-path> [SP <mail-parameters> ] <CRLF>
- 4.1.1.2. MAIL (MAIL) (page 33) :
- The reverse-path consists of the sender mailbox.
- Si l'adresse n'existe pas alors ce n'est pas un « mailbox » (boîte de réception de mail).
La solution recommandée est de créer un thème enfant de votre thème et d'ajouter des lignes dans le fichier fonctions.php pour remplacer l'adresse de leexpéditeur par une adresse qui existe.
Cette solution est compliquée pour un novice et ne survit pas à un changement de thème.
Une séparation des rôles impliquerait que ce ne serait pas au thème d'avoir à configurer de tels paramètres d'envoi de mails.
Une solution plus simple :
Utiliser le plugin : https://wordpress.org/plugins/wp-mailfrom-ii/
Une fois installé et activé, aller dans Réglages > Mail From et renseignee le nom de l'expéditeur dans From Name et l'adresse de l'expéditeur dans From Email Address.
Source : https://assistance.monarobase.net/configurer-ladresse-e-mail-expediteur-de-wordpress/

Images et miniatures

# WordPress crée à la volée plusieurs tailles d'images quand on en téléverse.
# Ces images sont utilisées par WordPress depuis la version 4.4 dans les tag "<img>" pour gérer les images responsives.
<img src="mon-image.jpg"
     srcset="mon-image-180.jpg 180w,
             mon-image-640.jpg 640w"
      sizes="50vw"
      alt="">

# Le tag "<img>" indique avec l'attribut srcset en plus de l'image contenue dans l'attribut "src" deux images supplémentaires : une image de 320px de large et une de 640px.
# L'attribut "sizes" indique également que notre tag "<img>" devra utiliser la moitié de la largeur totale du viewport.
# En visitant ce site avec un écran de 360 pixels de large, le navigateur chargera l'image "mon-image-180.jpg".
# Avec ces informations le navigateur pourra charger l'image idéale.
# WordPress redimensionne et recadre toutes les images en fonction des choix sélectionnés dans l'administration et en accord avec le thème utilisé.
# Décocher la case "Recadrer les images" pour parvenir aux dimensions exactes. Les miniatures resteront proportionnées.
# Modifier les tailles d'images par défaut peut être utile dans certains cas pour des besoins spécifiques à définir.
# Toutefois, il serait préférable de les laisser telles quelles et de créer des tailles d'images supplémentaires.
# Les valeurs de ces tailles d'images peuvent être modifier si réellement nécessaire depuis Réglage / Médias.
# Pour les déjà existantes, utiliser un plug-in pour régénérer les nouvelles miniatures.
# Generate Thumbnails : https://fr.wordpress.org/plugins/regenerate-thumbnails/
# WordPress est conçu par défaut pour générer 3 types de recadrage des images téléchargées (média).
# Il s'agit d'assurer la vitesse du site avec différentes tailles si nécessaire.
# Avec le téléchargement de l'image originale, il y aura au moins 4 fichiers :
Le fichier d'origine (Non rogné.)
Miniature / Vignette (Généralement 150 pixels x 150 pixels.)
Moyen (Généralement 300px × 300px.)
Grand (Généralement 1024 pixels x 1024 pixels.)
# A revoir :
# Il n'est pas recommandé de supprimer le code existant pour conserver le bon fonctionnement de son thème.
# Il faudrait alors supprimer les appels des autres fichiers où il est utilisé, généralement dans le fichier loop.php.

# Depuis le fichier /wp-admin/options-media.php on peut modifier les dimensions de la taille par défaut mais également ajouter une nouvelle taille.

# Utiliser la fonction add_image_size() dans le fichier functions.php pour ajouter une nouvelle taille d'image :
add_image_size( "$nom", $largeur, $hauteur, $proportion );
# Description des attributs :
$nom : chaîne - écrire le nom entre guillemets simples, c'est-à-dire 'portfolio'
$largeur : entier - écrire la largeur souhaitée, 500 (en px)
$hauteur : integer - écrire la hauteur souhaitée, 300 (en px)
$proportion : boolean - écrire true pour rogner l’image, sinon utiliser false
# L'attribut nommé "proportion" est nommé "crop" dans le Codex WordPress et correspond à un paramètre booléen (true/false).
# Les images générées doivent être proportionnées (false) ou recadrées pour être créées aux dimensions exactes (true).
# Exemple pour ajouter une taille_slide de largeur maximum de 300px et de hauteur automatique :
add_action( 'after_setup_theme', 'ajout_nouvelle_taille' );
function ajout_nouvelle_taille() {
    add_image_size( 'taille_slide', 300 );
}
# Taille de largeur maximum de 400px et de hauteur maximum de 200px :
add_image_size( 'taille_slide', 400, 200 );
# Utiliser un hardcrop pour avoir une image qui fait exactement 200px sur 200px avec le 4ème argument passé à "true".
# L'image va être coupée dans sa hauteur pour obtenir une image de 200px sur 200px.
# De base, la découpe se fait de façon à ce que le centre de la photo reste intacte.
# On peut définir où le crop va opérer avec un 4ème argument, un tableau avec un argument pour l'axe des X (largeur) et un autre pour l'axe des Y (hauteur).
add_image_size( 'taille_slide', 200, 200, true );
# Forcer WordPress a couper l'image par la gauche et par le haut, jusqu'à ce qu'elle fasse 200px sur 200px.
add_image_size( 'taille_slide', 200, 200, array( 'left', 'top' ) );
# Comme pour une image avec une taille par défaut, changer l'argument du nom de la taille pour utiliser une taille personnalisée "taille_slide".
echo wp_get_attachment_image( $attachment->ID, 'thumbnail' );
# A revoir :
# Différentes images peuvent être appelées en vedette à n'importe quel endroit du thème.
# Cet appel affichera la taille moyenne de l'image originale.
the_post_thumbnail( 'medium' );
# Utiliser la nouvelle taille 'portfolio' :
the_post_thumbnail( 'portfolio' );
# Notes :
# Dans la mesure où, par défaut, WordPress génère 3 tailles d'image personnalisables, il crée 4 fichiers pour chaque image.
# L'utilisation de plusieurs nouvelles tailles augmentera le nombre de fichiers stockés sur l'hôte de votre site.
# Utiliser plus de tailles d'image engendrera une augmentation des données a stocker.
# Le thème utilisé peut outrepasser les règles de base de WordPress et gérer lui-même l'affichage des images en capturant une fonction native : "wp_calculate_image_sizes()" ou "img_caption_shortcode()".
# Cela est également vrai pour certains plugins, qui pourraient générer eux même de nouvelles tailles de vignettes.
# Le widget amp semble créer de nouveaux formats pour les images.

Ajouter du Javascript dans WordPress

Permissions sur les Fichiers

Modifier les Permissions sur les Fichiers : https://codex.wordpress.org/fr:Modifier_les_Permissions_sur_les_Fichiers

Dans une page

Passer simplement l'éditeur en mode texte.
<script type="text/javascript">
var a = 5;
alert("Hello World. The value of a is : " + a);
</script>

Dans le head ou le footer

Ajouter un script Javascript dans le plugin "Header and Footer Scripts" pour insérer un code Javascript personnalisé.

Widgets

Créer une zone de Widget dans le template

functions.php

# Pour une seule zone.
if ( function_exists('register_sidebar') ) {
 register_sidebar(array(
 'name' => 'Sidebar',
 'before_widget' => '<div class="widget_sidebar">',
 'after_widget' => '</div>',
 'before_title' => '<h3>',
 'after_title' => '</h3>',
 ));	
 }
# Pour différentes zones.
if ( function_exists('register_sidebar') ) {
 register_sidebar(array(
 'name' => 'Sidebar',
 'before_widget' => '<div class="widget_sidebar">',
 'after_widget' => '</div>',
 'before_title' => '<h3>',
 'after_title' => '</h3>',
 ));
 register_sidebar(array(
 'name' => 'header_right',
 'before_widget' => '<div class="header_right" id="%1$s">',
 'after_widget' => '</div>',
 'before_title' => '<h3>',
 'after_title' => '</h3>',
 ));	  
 }

header.php

# Le fichier du template peut être header.php ou tout autre fichier ou l'on souhaite afficher le widget.
<div id="widget_header">
< ?php if ( !function_exists( 'dynamic_sidebar' ) || !dynamic_sidebar('header_right') ) ?>
</div>

Gestion des rôles de WordPress

Capability Manager Enhanced

Créer des rôles sur mesure : https://wordpress.org/plugins/capability-manager-enhanced/

Menu

Advanced Menu Widget : https://nl.wordpress.org/plugins/advanced-menu-widget/

Classer les médias dans des catégories

Enhanced Media Library : https://fr.wordpress.org/plugins/enhanced-media-library/

Systèmes de points pour WordPress

Un système de points peut permettre de valoriser la participation des différents acteurs utilisant un site.
Plus les utilisateurs resteront sur le site, mieux le SEO s'en portera.
Les utilisateurs qui laissent des commentaires pourront se voir créditer de points...
Les rédacteurs, les clients d'une boutique, pourront générer des points...

Autres systèmes à points pour WordPress

https://wordpress.org/plugins/tags/points/
http://www.geekpress.fr/creer-systeme-points-commentaires-wordpress/
http://www.wpbeginner.com/plugins/add-points-system-ignite-user-engagement/

Boutique de commerce pour WordPress

WooCommerce

WooCommerce est un composant de boutique en ligne pour WordPress.
Configurer WooCommerce : https://leswebmastersdumidi.fr/guide-utilisateur-woocommerce/options-et-parametrage/configurer-woocommerce/
Cacher les produits en rupture de stock : https://woofrance.fr/forums/topic/ne-plus-afficher-les-produits-en-rupture-de-stock/

Correction de modèles WooCommerce obsolètes

WooCommerce / Statut / Statut du système
Source : https://docs.woocommerce.com/document/fix-outdated-templates-woocommerce/

Widgets complémentaires pour WooCommerce

WCFM Marketplace – WooCommerce Multivendor Marketplace
WCFM Marketplace – WooCommerce Multivendor Marketplace
https://wordpress.org/plugins/wc-multivendor-marketplace
WCFM Maketplace nécessite le plugin WCfM Dashboard pour être actif !
Je clique sur le bouton pour installer le Dashboard.
La configuration commence.
Lors de la configuration l'API Google peut être demandée, pour afficher les produits sur une carte.
Créer une clé API depuis Google Developers / Google Map : https://developers.google.com/maps/documentation/javascript/tutorial
WCFM – WooCommerce Frontend Manager
Exemple : demo.wcfmdemos.com/my-account/
WCFM - WooCommerce Multivendor Membership
Créer différents niveaux de membre (bronze, argent, or...) :
https://wclovers.com/knowledgebase/wcfm-membership/
Systèmes à points pour WooCommerce
MyCred
Site officiel : https://mycred.me
https://wordpress.org/plugins/mycred/
https://www.mycred.me/add-ons/gateway/
https://codex.mycred.me/chapter-iii/gateway/woocommerce/
https://codex.mycred.me/chapter-iii/gateway/woocommerce/pay-with-points/
Comment donner des points myCRED aux acheteurs de WooCommerce : https://memberfix.rocks/mycred-woocommerce/
Pour installer MyCred :
Extensions / Ajouter
Chercher MyCred.
Installer. Activer.
Extensions / Installation de MyCRED
Your First Point Type - Je laisse les options par défaut. Je rajoute le suffixe " Point ", car, ici, les produits ne vaudront que un seul point. Pas de difficultés pour afficher un s éventuel.
Pour utiliser MyCRED avec WooCommerce, il faudra alors configurer le système de paiement de WordPress.
MyCRED peut être cumulé à un autre système de paiement, mais, une seule devise doit servir pour acquérir le contenu d'un panier.
Autres systèmes de points pour WooCommerce
https://wordpress.org/plugins/gratisfaction-all-in-one-loyalty-contests-referral-program-for-woocommerce/
https://wordpress.org/plugins/beans-woocommerce-loyalty-rewards/
Ajouter des produits dans WooCommerce
Le système présenté précédemment est beaucoup plus performant !
Il permet le dépôt des produits, mais aussi, la gestion des produits, tout en proposant une boutique individuelle pour le vendeur, et, une boutique globale qui recense tous les produits.
Ce Widget permet uniquement d'ajouter un formulaire de saisie de produit en front-end pour WooCommerce : https://wordpress.org/plugins/ns-add-product-frontend/
J'ai désinstallé ce Widget qui ne répond pas aux attentes pour la bonne gestion des produits en ligne.
Comment créer soit même un tel formulaire en 12 étapes : https://toolset.com/learn/create-an-ecommerce-wordpress-site/
Géolocaliser les vendeurs de WooCommerce
https://woogeolocation.com

Correction de modèles WooCommerce obsolètes sur un template

https://docs.woocommerce.com/document/fix-outdated-templates-woocommerce/
http://translate.google.com/translate?hl=fr&sl=auto&tl=fr&u=https%3A%2F%2Fdocs.woocommerce.com%2Fdocument%2Ffix-outdated-templates-woocommerce%2F

Shortcodes

Shortcodes : https://en.support.wordpress.com/shortcodes/

Ajouter un historique des actions utilisateurs

Simple History : https://wordpress.org/plugins/simple-history/

Intégrer un slider

Intégrer un slider d'images dans WordPress.

Broken Link Checker

Un widget pour vérifier les liens morts de son site Wordpress : Broken Link Checker.

Optimiser les images de WordPress

https://imagify.io/fr
https://wordpress.org/plugins/imsanity/
https://wordpress.org/plugins/wp-smushit/
https://wordpress.org/plugins/resmushit-image-optimizer/
# Semble le plus intéressant car pas limité :
https://wordpress.org/plugins/ewww-image-optimizer/

Personnaliser les mails de WordPress

Source : https://wpmarmite.com/personnaliser-emails-wordpress/

Ajouter le HSTS à WordPress

Widget : https://wordpress.org/plugins/lh-hsts/

Yoast SEO

https://audreytips.com/yoast-seo-wordpress/
L'extension Yoast SEO prend le soin d'ajouter automatiquement les balises Open Graph pour afficher une image adaptée aux réseaux sociaux.

Intégrer le contenu d'une page Mediawiki dans WordPress

Avec le Widget RDP Wiki Embed, une page de Mediawiki peut être affichée dans un article de WordPress.

Ajouter une carte

Novo-Map

Manuel : https://www.novo-monde.com/novo-map-manuel-utilisation/
Exemples : https://www.novo-monde.com/novo-map-wordpress-plugin-examples/

Leaflet Maps Marker

Source : https://fr.wordpress.org/plugins/leaflet-maps-marker/

OSM – OpenStreetMap

Source : https://fr.wordpress.org/plugins/osm/

Intégrer un forum

WP Discourse

Source : https://wordpress.org/plugins/wp-discourse/

Sauvegarder WordPress

BackWPup

Site officiel : https://fr.wordpress.org/plugins/backwpup/

Sauvegarde

Installer le plugin BackWPup.
Dresser la liste des plugins installés.
Sauvegarder le site.
Automatiser la sauvegarde avec cron.
Lien complémentaire : https://wpchannel.com/wordpress/tutoriels-wordpress/automatiser-sauvegarde-automatique-wordpress-ftp-mysql/

Restauration

Copier les fichiers sur le serveur à restaurer. (Ne pas charger les 3 fichiers suivants sur le FTP : base de données, données xml et liste de plugins.)
Supprimer les tables existantes et importer le fichier .sql fournit pas BackWPup.
En cas de changement d'hébergeur : Remplacer par exemple localhost/wordpress par www.visionduweb.eu (sans le https://) dans toutes les tables de données.
Les informations nécessaires pour établir la connexion sont regroupées dans le fichier wp-config.php de votre site WordPress.
Ce fichier se trouve à la racine de votre site, c’est lui qui permet la liaison avec la base de données.

UpdraftPlus

La solution UpdraftPlus permet de réinstaller le site sur le même serveur.
La solution UpdraftPlus n'est pas adaptée pour une migration.

Installer et activer le Widget UpdraftPlus.
UpdraftPlus se trouve dans Réglages > Sauvegardes UpdraftPlus.
Télécharger la sauvegarde depuis FTP : /wp-content/updraft

Sauvegarde effectuée le 24 avril 2019.

Sélectionnez tous les fichiers correspondant à votre sauvegarde.
Il s’agit des dossiers finissant par db.gz (la database), other.zip, themes.zip (vos thèmes), plugins.zip (la liste de vos plugins) et uploads.zip (votre bibliothèque de médias en quelques sortes, sachant que ce dossier peut-être découpé en plusieurs parties si votre site contient de nombreuses photos par exemple). 

Ajout d'une sauvegarde journalière des fichiers conservée en 2 exemplaires.
Ajout d'une sauvegarde de la base de données toutes les 12 heures conservées en 4 exemplaires. 

Le fichier .htaccess ne semble pas être restauré.

Source : https://wpformation.com/sauvegardez-votre-site-wordpress-avec-updraftplus/
Source : https://progresser-en-informatique.com/formation/wordpress/sauvegarder-site-wordpress/
Restauration :
Ajouter les archives sauvegardées dans le dossier /wp-content/updraft
Donner les archives à www-data et passer le chmod à 755.

Dans réglages / Sauvegardes UpdraftPlus
Une archive est maintenant disponible. Cliquer sur restaurer l'archive.

Penser à supprimer les dossier -old qui ont été générés.
Penser à récupérer le .htaccess original.

Migration de WordPress

Migration manuelle

Changer les préfixes de toutes les tables

Pourquoi changer le préfixe de toutes les tables

De nombreux administrateurs WordPress oublient de changer le préfixe de la base de données lors de l'installation de WordPress.
Cela permet aux pirates informatiques de planifier plus facilement une attaque massive en visant le préfixe par défaut wp_.
Certains diront qu'il est inutile de changer le préfixe puisque un pirate avisé saura retrouver le préfixe.
En laissant les préfixes des tables par défaut, cela facilite indirectement le travail de ces hackers.
En changeant le préfixe, de nombreuses attaques informatiques de base ne pourront plus fonctionner.
Autant prendre en compte cette configuration personnalisée.
Risques en laissant les préfixes par défaut :
Ajouts de contenu sur le site ou de commentaires de spams.
Altération ou destruction du contenu du site.
Site rendu indisponible.
Vol d'informations.

Depuis le fichier de configuration wp-config.php de WordPress

# Ce fichier devra toujours être modifié si le préfixe de la base de données est modifié.
# Éditer le fichier de configuration de WordPress :
sudo nano wp-config.php
# Modifier :
$table_prefix  = 'wp_new_';

Depuis la base de données

# Sauvegarder la base de données avant toutes modification.
# Remplacer le préfixe de la base de données avec la valeur renseignée précédemment : wp_new_
# Renommer toutes les tables WordPress avec la commande équivalent :
RENAME table 'wp_commentmeta' TO 'wp_new_commentmeta';
# Si la fonctionnalités multi-sites est activée, renommer les tables WordPress suivantes :
RENAME TABLE'wp_blogs' TO 'wp_new_blogs';
RENAME TABLE'wp_blog_versions' TO 'wp_new_blog_versions';
RENAME TABLE'wp_registration_log' TO 'wp_new_registration_log';
RENAME TABLE'wp_signups' TO 'wp_new_signups';
RENAME TABLE'wp_site' TO 'wp_new_site';
RENAME TABLE'wp_sitecategories' TO 'wp_new_sitecategories';
RENAME TABLE'wp_sitemeta' TO 'wp_new_sitemeta';
# Modifier les options :
# Cela affichera des résultats qu'il faudra modifier.
SELECT * FROM 'wp_new_options' WHERE 'option_name' LIKE '%wp_%';

# Modifier la table usermeta :
# Cela affichera des résultats qu'il faudra modifier.
SELECT * FROM 'wp_new_usermeta' WHERE 'meta_key' LIKE ‘%wp_%’

# La table option et usermeta peuvent être automatiquement mises à jour avec le script SQL suivant :
UPDATE 'wp_new_options' SET 'option_name'=REPLACE('option_name','wp_','wp_new_') WHERE 'option_name' LIKE '%wp_%';
UPDATE 'wp_new_usermeta' SET 'meta_key'=REPLACE('meta_key','wp_','wp_new_') WHERE 'meta_key' LIKE '%wp_%';
# Le widget duplicator possède une table à modifier également : duplicator_packages
# Tester le site.
Script pour générer les requêtes SQL pour changer le préfixe de toutes les tables d'un site WordPress
# Testé, amélioré et approuvé !
<?php
 // Ajouter l'adresse IP autorisée a consulter les informations de cette page :
 $ip_un_autorisee = "xx.xx.xxx.xx";
 $ip_deux_autorisee = "xx.xxx.xx.xx";
 //if($_SERVER['REMOTE_ADDR'] == "$ip_un_autorisee"){
 if("$ip_un_autorisee" == $_SERVER['REMOTE_ADDR'] || "$ip_deux_autorisee" == $_SERVER['REMOTE_ADDR']){
 // Affichage de la page ...
 // echo "Le contenu de la page va continuée d'être chargée.";
 } else {
 // Message d'erreur :
 echo "<h1 align='center'>Vous n'êtes pas autorisé a afficher cette page</h1>";
 // La commande exit arrête l'interprétation du code PHP pour le reste de la page.
 exit;
 }
 
 echo "<h1 align='center'>Changer les préfixes des tables de la base de données</h1>";
 
 /*---------------------------------------------------------------*/
 /*         Modifier le préfixe de toute les tables MySQL         */
 /*---------------------------------------------------------------*/
 // Serveur MySQL :
 $sql_serveur = "localhost";
 // Nom de la base de données :
 $sql_base = "xxxxxxxxxx";
 // Login de l'utilisateur de la base de données :
 $sql_login = "xxxxxxxxxx";
 // Mot de passe de l'utilisateur de la base de données :
 $sql_password = "xxxxxxxxxx";
 // Ancienne valeur du préfixe :
 $table_prefixe = "wp_";
 // Nouvelle valeur du préfixe :
 $new_prefixe = "wp_new_";
 
 // Connexion au serveur MySql :
 $lk = "mysql:host=$sql_serveur;dbname=$sql_base;port=3306;charset=utf8";
 try {
 $connexion_pdo = new PDO($lk, "$sql_login" , "$sql_password");
 echo "La connexion à la base de données a bien été établie.<br/>";
 }
 catch (PDOException $exception) {
 // Envoyer un mail en cas d'erreur de connexion à la base de données.
 // mail('administrateur@domaine.com', 'PDOException', $exception->getMessage());
 exit('Erreur de connexion à la base de données.');
 }
 
 $requete = "SHOW TABLES";
 $query = $connexion_pdo->prepare($requete);
 $query->execute();
 $all_tables = $query->fetchAll(PDO::FETCH_COLUMN);
 echo "Mettre à jour la base de données avec les commandes suivantes pour changer le préfixe des tables.<br/><br/>";
 echo "<h2>Se connecter à la base de données</h2>";
 echo "mysql -u $sql_login -p$sql_password -h $sql_serveur -D $sql_base<br/><br/>";
 echo "<h2>Renommer les tables</h2>";
 foreach ($all_tables as $table) {
     $new_table = str_replace($table_prefixe, $new_prefixe, $table);
     // Modifier l'ancien préfixe de la table par le nouveau prefixe.
     echo "RENAME table '$table' TO '$new_table';<br/>";
 }
 
 $result = [];
 foreach ($all_tables as $key => $table) {
     $requete = "DESCRIBE $table";
     $columns = $connexion_pdo->prepare($requete);
     $columns->execute();
     $columns = $columns->fetchAll(PDO::FETCH_COLUMN);
 
     foreach ($columns as $column) {
         $r = "SELECT * FROM'$table' WHERE'$column' LIKE '%$table_prefixe%'";
         $p = $connexion_pdo->prepare($r);
         $p->execute();
         $p = $p->fetchAll(PDO::FETCH_ASSOC);
 
         if (count($p) > 0) {
             $result[$table][$column] = $p;
         }
     }
 }
 
 echo "<h2>Mettre à jour les colonnes</h2>";
 foreach ($result as $table => $items) {
     echo "<h3>Table : $table</h3>";
     foreach ($items as $column => $item) {
         echo "<h4>Colonne : $column " . count($item) . " ligne(s)</h4>";
         foreach ($item as $structures) {
             $new_table     = str_replace($table_prefixe, $new_prefixe, $table);
             $new_structure = str_replace($table_prefixe, $new_prefixe, $structures[$column]);
  
             // UPDATE NEW_PREFIX_options SET option_name = replace(option_name, 'ANCIEN_PREFIX_user_roles', 'NEW_PREFIX_user_roles');
             echo "UPDATE $new_table SET $column = replace($column, '$structures[$column]', '$new_structure');<br/>";
         }
     }
 }
 
 echo "<h1 align='center'>Les commandes SQL pour changer les préfixes ont été générées</h1>";
 ?>

Utiliser un plugin

# Des plugins existent pour faire les modifications mais on préférera suivre les étapes manuelles présentées par après.
https://wordpress.org/plugins/brozzme-db-prefix-change/
Navigate to Plugins -> Add new section.
Type in search change-table-prefix , you will see a list of recommended plugins.
Click on Install Now & Activate Change Table Prefix plugin.
After that, navigate to Settings -> Change table prefix.
Select the following option, Would you like to use your own custom prefix and type a prefix you want to use in field, for example wpnew_.
You will get a message about successful prefix replacement.

Depuis PHPMyAdmin

En sélectionnant toutes les tables dans PHPMyAdmin, une option dans la liste des options déroulantes au bas de la page permet de modifier le préfixe des tables.
Il faudra malgré tout modifier manuellement les options et la table usermeta comme précédemment.

Afficher les requêtes a effectuer avec un script PHP

# Le script suivant va générer les requêtes à lancer depuis MySQL / MariaDB ou PHPMyAdmin.
..

Modifier la référence au domaine dans la base de données

USE la_base_a_utiliser
UPDATE wp_options
SET option_value = replace(option_value, 'http://localhost', 'http://lecannabiste.com')
WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = REPLACE (guid, 'http://localhost', 'http://lecannabiste.com');

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://localhost', 'http://lecannabiste.com');

UPDATE wp_options SET option_value = REPLACE(option_value, 'https://www.MonAncienneURL.tld', 'https://www.MaNouvelleURL.tld') WHERE INSTR(option_value, 'https://www.MonAncienneURL.tld') > 0;
UPDATE wp_posts SET guid = REPLACE(guid, 'https://www.MonAncienneURL.tld', 'https://www.MaNouvelleURL.tld') WHERE INSTR(guid, 'https://www.MonAncienneURL.tld') > 0;
UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://www.MonAncienneURL.tld', 'https://www.MaNouvelleURL.tld') WHERE INSTR(post_content, 'https://www.MonAncienneURL.tld') > 0;
Source complémentaire : https://www.ionos.fr/digitalguide/hebergement/blogs/migration-wordpress-conseils-pour-changer-de-serveur/
Source complémentaire : https://wpmarmite.com/migrer-wordpress-manuellement/

Vérifier les options générales de WordPress

Normalement, le nouveau site doit maintenant apparaître, sinon, faire les modifications depuis les options de WordPress.

Migration avec le Widget Duplicator

Installer et activer le widget Duplicator.
Sur certains serveurs la limitation pour PHP ne permet pas au plugin d'aboutir la sauvegarde.
Utiliser le widget UdraftPlus semble une alternative plus efficace.
Onglet Duplicator : CREATE NEW
Exclure les dossiers trop volumineux
- la sauvegarde précédente : /www/wp-content/updraft
- le dossier des fichiers medias : /www/wp-content/uploads/;
Onglet SETUP : Être sur PASS (Je n'ai pas vu cette proposition.) Suivant.
Onglet SCAN : Les étapes doivent être validées pour passer à la suite.
Onglet BUILD : Créer la duplication.
Préparer l'import !
En local, créer une nouvelle base de données.
Le fichier nommé “installer.php” et le fichier zip nommé "xxxx.archive.zip" à la racine de l'hébergement. Ne pas dézipper l'archive soit même.
Lancer l'installation avec installer.php
CONNECT AND REMOVE ALL DATA + Informations sur la nouvelle base de données.
Mettre à jour les données URL.
Tester l'installation.
Finalisation de l'installation :
- la mise à jour du .htaccess : Aller dans l'administration du site, onglet REGLAGES > PERMALIENS > puis "enregistrer les modifications" à nouveau.
- la vérification de chaque page et de chaque article du site pour voir si tout est fonctionnel.
- supprimer les fichiers suivants situés à la racine votre hébergement ou de votre dossier : installer-data.sql / installer-log.txt / installer.php

Source : https://wpformation.com/migrer-wordpress-duplicator/

Permaliens

Erreur 404

Les permaliens fonctionnent avec la syntaxe suivante :
/blog/?p=123
/blog/index.php/nom-du-post
Mais plus avec :
/blog/nom-du-post
Vérifier que le module mode rewrite soit bien activé.
Sinon :
Vérifier la configuration du fichier VirtualHost : 
cd /etc/apache2/sites-available/
nano lesite.conf
Remplacer :
AllowOverride None
par
AllowOverride All

Bridge

Intégration de Moodle

https://edwiser.org/bridge/

Sécurité

Configurer le fichier .htaccess de Wordpress

Protéger l'interface d'administration

# Protéger l'administration avec une adresse IP unique autorisée.
<Files wp-login.php>
order deny,allow
Deny from all
Allow from xx.xxx.xxx.xxx
</Files>

Protéger le fichier wp-config.php

# Protéger le fichier de configuration.
<files wp-config.php>
order allow,deny
deny from all
</files>

Changement de domaine

Suite à un changement de nom de domaine, vérifier les informations présentes dans le fichier .htaccess concernant la présence du bon nom de domaine a utiliser.

Créer une redirection des anciens domaines vers le nouveau domaine

# Si nécessaire, décommenter l'option suivante :
# Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
# Sources complémentaires :
Rediriger le domaine http://visionduweb.com vers http://www.visionduweb.com
Source : http://nouri-tawfik.com/blog/reecriture-durls-wordpress-sans-www/

Passer son domaine en https

# Par défaut, si le fichier .htaccess n'existe pas, le créer.

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
# Rediriger vers https://domaine.ext
# Redirection vers HTTPS 
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ https://monsite.com/$1 [R=301,L]

# Redirection du www vers non-www en HTTPS
RewriteCond %{HTTP_HOST} ^www\.monsite\.com [NC]
RewriteRule ^(.*)$ https://monsite.com/$1 [R=301,L]
# Rediriger vers https://www.domaine.ext
# Redirection vers HTTPS 
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ https://www.monsite.com/$1 [R=301,L]

# Redirection du non-www vers www en HTTPS
RewriteCond %{HTTP_HOST} ^monsite.com [NC]
RewriteRule ^(.*)$ https://www.monsite.com/$1 [R=301,L]
Source : https://wpmarmite.com/wordpress-https/#extensions-https
Source : https://wpmarmite.com/htaccess-wordpress/

Protéger le répertoire /wp-content/uploads/ pour empêcher l'exécution de fichier .php

# Un fichier .htaccess peut être ajouté dans le répertoire /wp-content/uploads/.
# Ce code peut être utilisé pour bloquer l'exécution d'un fichier potentiellement malveillant ajouté dans ce répertoire.
<FilesMatch “\.(?:php)$”>
Order allow,deny
Deny from all
</FilesMatch>

Configurer les permissions d'accès aux fichiers

# Régler les permissions d'accès aux fichiers de WordPress de la façon suivante :
Les permissions doivent être réglées sur 0755 pour les dossiers
Les permissions doivent être réglées sur 0644 pour les fichiers

Widget pour la sécurité

iThemes Security

# Anciennement Better WP Security :
https://fr.wordpress.org/plugins/better-wp-security/

Protection contre les attaques par brute force

Wordfence security, Login LockIn, Login security solution, BruteProtect (maintenant intégré à Jetpack), BulletProof Security, SecuPress
https://wordpress.org/plugins/wordfence/
https://wordpress.org/plugins/login-lockdown/
https://wordpress.org/plugins/login-security-solution/
https://wordpress.org/plugins/bruteprotect/

Déplacer la page de connexion

WPS Hide Login, SF Move Login ou SecuPress
https://wordpress.org/plugins/wps-hide-login/
https://wordpress.org/plugins/sf-move-login/
https://secupress.me/fr/

Plugin tout en un qui incluent de nombreuses protections

SecuPress (français), iThemes Security, Wordfence security.
https://secupress.me/fr
https://wordpress.org/plugins/better-wp-security/
https://wordpress.org/plugins/wordfence/

Double authentification pour la connexion

SecuPress, Google Authenticator, Duo Two-Factor Authentication.
https://secupress.me/fr
https://wordpress.org/plugins/miniorange-2-factor-authentication/
https://wordpress.org/plugins/duo-wordpress/

Changer le mot de passe administrateur de WordPress

Source : https://www.easytutoriel.com/reinitialiser-mot-de-passe-wordpress.html
Source : https://codex.wordpress.org/fr:R%C3%A9initialisation_de_votre_mot_de_passe

Exploit scanner

Exploit Scanner pour WordPress : https://wordpress.org/plugins/exploit-scanner/

Changer le template de WordPress

Simple Shop Free

Simple Shop Free : https://slocumthemes.com/wordpress-themes/simple-shop-free/

Themeforest

Themeforest : https://themeforest.net

Site de rencontre

Les thèmes WordPress pour créer un site de rencontre :
Kleo
LoveStory
Love Hearts
Dating Agency
Gleam
Sweet Date
Les plugins WordPress pour créer un site de rencontre :
BuddyPress
Rencontre
Ultimate Member

SEO

Script to footer : met les script javascript dans le footer des pages, pour améliorer la vitesse de chargement des pages. Il a l'air de fonctionner correctement.
Better WordPress Minify : supprime les caractères 'inutiles' des javascripts et css.
Autoptimize : assemble tous les css et javascripts dans un seul fichier.
Gzip Ninja : activer la compression des données.
Activer le plugin super cache.

Scripts WordPress pour le SEO

https://fr.wordpress.org/plugins/wordpress-seo/
https://fr.wordpress.org/plugins/all-in-one-seo-pack/
https://fr.wordpress.org/plugins/all-in-one-schemaorg-rich-snippets/

Bibliographie

Ok-ko.png Trucs et astuces pour WordPress : http://memo-web.fr/memo-membre-1-122.php
Ok-ko.png Nouveautés avec la version de WordPress 5.2 : https://www.developpez.net/forums/d1970079/php/scripts/cms/wordpress/wordpress-5-2-jaco-debarque-possibilite-voir-l-etat-sante-site/
Ok.png Requêtes SQL, utiliser WordPress : https://wpformation.com/requetes-sql-utiles-wordpress/
Ok.png Le guide complet pour optimiser vos images sur WordPress : https://audreytips.com/guide-complet-optimiser-images-wordpress/

NAVIGATION

PARTICIPER ET PARTAGER

Vous êtes sur le wiki de Vision du Web.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Pour participer sur le wiki, créer un compte utilisateur en haut à droite.
La recherche interne du wiki permet de trouver le contenu qui vous intéresse.
Les informations présentes sur ce wiki sont issues d'une recherche personnelle.
Identifiez-vous pour poser vos questions sur la page de discussion de VisionDuWeb.
Améliorer le contenu des pages en faisant des propositions depuis l'onglet discussion.
Les informations du wiki ne doivent pas servir à nuire à autrui ou à un système informatique.
De nombreux outils gratuits sont listés et disponibles dans la boîte à outils de Vision du web.
D'autres pages du wiki peuvent correspondre à vos attentes. La liste de toutes les pages du wiki.

VALORISER LE WIKI

Valoriser le contenu partagé sur le wiki avec un don en monnaie numérique :
AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash

OBTENIR DE LA MONNAIE NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Gagner des Altcoins - Miner des Altcoins.
Consulter le miroir du wiki depuis Planet Hoster : Le miroir du wiki version du 12 Juillet 2019.