Table des matières
Wordpress
Documentation
Pour les développeurs
-
-
- Settings & Options
- la classe jeremyHixon/RationalOptionPages
- Wordpress hooks
- liste des hooks sur Codex WP
- Ajax
- Form
- Settings
- wp_dropdown_categories: HTML dropdown list of categories (options: show_option_none, hierarchical, …)
piratage weatherplllatform
Frameworks
- Sage The best WordPress starter theme with a modern front-end development workflow.
http://wordpress.org/extend/plugins/options-framework/ - The Options Framework Plugin makes it easy to include an options panel in any WordPress theme. It was built so developers can concentrate on making the actual theme rather than spending time creating an options panel from scratch.
Pods Framework - Pods is a framework for WordPress that allows you to create, extend, manage, and deploy customized content types and fields.
NHP-Theme-Options-Framework - Simple, easy to use, very extendable Options framework for WP themes.
Redux-Framework a fork of NHP-Theme-Options-Framework.
Bedrock WordPress boilerplate with modern development tools, easier configuration, and an improved folder structure. Gestion complète avec git & composer, arborescence fichiers différente de la native WP.
De bons développeurs de plugins et thèmes pour inspiration:
RGPD / GDPR
Remplace les fonts google de DIVI par une version copiée en local. Utilise le principe de wp_enqueue_script()
et wp_enqueue_style()
Quelques plugins:
Sécuriser Wordpress
Sucuri, StackPath, SiteLock, Jetpack Security, Wordfence Security, BulletProof Security, iThemes Security, All In One WP Security & Firewall (AIOS), Shield Security
// Disallow file edit define( 'DISALLOW_FILE_EDIT', true );
Monitoring & Observability
Wordfence
Pare-feu d'applications Web (WAF)
All-In-One Security (AIOS)
All-In-One Security (AIOS) – Security and Firewall (WAF)
https://wordpress.org/plugins/all-in-one-wp-security-and-firewall/
Two-factor (2FA)
- Two-factor plugin: 2FA with Email, FIDO Universal 2nd Factor (U2F), Time Based One-Time Passwords (TOTP)
- enable 2FA for all: https://github.com/WordPress/two-factor/issues/307#issuecomment-624843209
Single Sign On (SSO)
Stream
Pour conserver les traces (QQQ) de toutes les actions dans Wordpress.
PasswordLess
Password less, sans mot de passe.
Admin Url
Changer l'url pour se connecter et de l'admin
-
- a light plugin that lets you easily and safely change wp-login.php. It doesn’t literally rename or change files in core, nor does it add rewrite rules. It simply intercepts page requests and works on any WordPress website. The wp-admin directory and wp-login.php page become inaccessible, so you should bookmark or remember the url. Deactivating this plugin brings your site back exactly to the state it was before.
-
- URL d’inscription et de mot de passe oublié: Il vous faut donner l’url. exemple : /login?action=register ou /login?action=lostpassword. Mais il n’y pas de redirection via le plugin, de l’url par défaut de WordPress (/wp-login.php?action=register ou /wp-login.php?action=lostpassword) sinon tout le monde pourrait connaître l’url d’administration de votre site.
Login with OAuth2
Le plugin de MiniOrange
- L'auto register n'est pas dans la version gratuite.
- WP has SSO OAuth Server https://plugins.miniorange.com/single-sign-on-sso-for-nextcloud-using-wordpress-as-oauth-server
Le plugin de Dash10 Digital
- Simple Single Sign On de Dash10 Digital
- configuration du Client ID et Client Secret issus de l'ajout client OAuth dans Nextcloud
- et pour OAuth Server URL c'est https://cloud.internet.org/index.php/apps/oauth2/authorize
Celui de steve06
- Login and authenticate Wordpress users using OAuth Server credentials
- Avec des serveurs préconfigurés et un custom
- Le mapping des user info permet-il d'exprimer un path ?
- Question posée sur le forum https://wordpress.org/support/topic/attribute-mapping-with-key-path/
Le protocole OAuth fonctionne, mais que pour l'autorisation. Le problème est la récupération des infos du remote user pour mapper avec les wordpress users, il faut utiliser une API qui est propre à chaque service.
Ces plugins n'implémentent pas l'API de Nextcloud (OCS) donc pas compatible.
Le plugin wp_oauth2_client fonctionne avec Nextcloud
- il permet de définir le mapping “
local user ↔ remote user
” - option pour créer ou pas les comptes
Tricks & Tips
"Une autre mise à jour est actuellement en cours"
- Supprimer le fichier
.maintenance
à la racine du site ; - Supprimer les dossiers contenus dans le répertoire
wp-content/upgrade
; - Supprimer la ligne
wp_options.option_name = core_upgrader.lock
.
Il se peut qu'il n'y ai aucun fichier mais seulement le ligne dan la BdD.
Modifier préfixe base de données WordPress
WP-Cli
Backup / Sauvegarde
Maintenance
Ce bout de code dans le functions.php
du thème affiche un message aux visiteurs et permets toujours de se connecter via /wp-admin
.
// // Maintenance mode === // function wp_maintenance_mode() { if (!current_user_can('edit_themes') || !is_user_logged_in()) { wp_die('<h1>Site de développement</h1><br/>Visitez le site <a href="https://site.prod">site.prod</a>'); } } add_action('get_header', 'wp_maintenance_mode');
WP Query
Categories et tags
Dans une catégorie et dans d'autres:
$q = new \WP_Query([ 'cat'=> $cat->term_id, 'category__in'=> $another_categories_term_id, ...
Customize Admin
WP-Cron
# Use system crontab # */5 * * * * /usr/bin/wget -q -O - --delete-after https://xxxx.xx/wp-cron.php?doing_wp_cron define('DISABLE_WP_CRON', true);
Flash message & co
Côté back
- Afficher des notices (error or success) après une redirection: Displaying Errors from the save_post Hook in WordPress
Côté front
Emoji
Si on ne veut pas des émojis il faut supprimer les actions wordpress associés :
// Stop Loading wp-emoji-release.min.js and CSS file remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); remove_action( 'wp_print_styles', 'print_emoji_styles' );
Q & A
- http://themecheck.info Vérifier la qualité des thèmes.
Nginx configuration
Pour faire tourner Wordpress avec Nginx.
Cache
Wordpress gère nativement un cache (WordPress object cache) pour toutes ses données (transients, options, meta, posts, users …)
Avec APCu
- WordPress APCu Object Cache Backend by Scott Cariss (l3rady) (a fork from Mark Jaquith's APC Object Cache Backend)
- Ne pas oublier de définir une clé unique pour le site quand mutualisation de php avec
define('WP_APCU_KEY_SALT','<unique key>');
- Un outil de visualisation de l'état d'APCu est fourni dans sa distribution, que l'on peut retrouver ici krakjoe/apcu ; prendre le fichier apc.php dans la release correspondante à celle installée
Avec Memcached
- WordPress + Memcached One of the most bizarre critiques of WordPress that I often hear is “it doesn’t come with caching” – which makes no sense because Cache is one of the best features of WordPress out of the box
Autre trucs:
- NGinx plugins: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/ (en bas de page)
W3 Total Cache API
flush_pgcache() //page cache flush_dbcache() // database cache flush_minify() // minify cache flush_all() //all caches // Clear all W3 Total Cache if( class_exists('W3_Plugin_TotalCacheAdmin') ) { $plugin_totalcacheadmin = & w3_instance('W3_Plugin_TotalCacheAdmin'); $plugin_totalcacheadmin->flush_all(); echo __('<div class="updated"><p>All <strong>W3 Total Cache</strong> caches successfully emptied.</p></div>'); }
Varnish
WordPress with Varnish
- Implementing WordPress with Varnish (Varnish documentation)
- Varnish HTTP Purge purge sends a PURGE request to the URL of a page or post every time it it modified.
- WPBase Cache was developed to optimize the WordPress deployment on varnish + nginx + php-fpm + php-apc server stack using three type of caches full page cache, db cache and opcode cache.
Update files without FTP
In wp-config.php
:
define('FS_METHOD','direct');
Load WordPress Posts With AJAX
- Article & Plugin by Michael Martin: Load Next WordPress Posts With AJAX
- Article by Emanuele Feronato: Loading WordPress posts with Ajax and jQuery, using the standard Kubrick theme without any plugin installed.
Maintenir un plugin sur Github ou GitLab
-
- variante: thenbrent deploy.sh
Bug avec MySql et Inner Join
get post custom orderby
On ne peut pas mettre ce qu'on veut en $args['orderby']
de WP_Query … WP filtre avec WP_Query::parse_orderby()
.
Comment faire si j'ai besoin de ORDER BY min(wp_postmeta.meta_value) ASC
?
On peut utiliser un filter
temporaire comme :
add_filter('posts_orderby', 'edit_posts_orderby'); function edit_posts_orderby($orderby_statement) { $orderby_statement = " term_taxonomy_id ASC "; return $orderby_statement; } query_posts($args); remove_filter('posts_orderby', 'edit_posts_orderby');
Si c'est dans une recherche $q['s']
il y a le filtre posts_search_orderby
appelé depuis WP_Query::get_posts()
.
Il y a aussi apply_filters_ref_array( 'posts_orderby', array( $orderby, &$this ) );
qui est dans WP_Query::get_posts()
.
public function dmach_archive_post_args_posts_orderby( $orderby ) { $orderby = 'min(meta_value)' ; remove_filter('posts_orderby', [$this,'dmach_archive_post_args_posts_orderby']); return $orderby ; } public function dmach_archive_post_args( $args ) { Queries::fillWpQueryArgs( $args ); add_filter('posts_orderby', [$this,'dmach_archive_post_args_posts_orderby']); return $args ; }
Background & Async
Job, Runner …
-
- Async job
- but use http ajax so it's depends to request time limit
-
- Listening a MQ (RabbitMQ or Gearman)
Youtube
Récupérer les videos d'une chaine (Channel) Youtube.
Une clé Google API est-elle nécessaire ?
Qlqs plugins
- Developpement
- query-monitor https://wordpress.org/plugins/query-monitor/
- Gestion de contenu
- Enhanced Media Library par wpUXsolutions
- Formulaires
- ContactForm7 https://contactform7.com
- WPForms https://wpforms.com (ex PirateForm)
- GravityForms https://www.gravityforms.com
- Représentation et gestion du temps
- WPIT Gantt qui utilise Gantti
- WP SIMILE Timeline qui utilise SIMILE Timeline
- Carto
- Gestion d'accès (droits et autres rôles)
- Un wordpress privé avec Force Login de Kevin Vess
- Simple, léger et efficace
WP App Studio's plugins (free & not free).
Qlqs thèmes
- Qlqs thèmes sur artefacts.coop
Divi
Migrer un site:
- Exporter les réglages DIVI (dossier et-cache est pas bon)
Zerif-lite
- Search results for Zerif on docs.themeisle.com
oembed
WordPress oEmbed reconnait les URLs de quelques services et formate automatiquement le contenu à partir de l'URL (version >= 2.9).
WP filters:
-
- Filters the cached oEmbed HTML
apply_filters( 'embed_oembed_html', string|false $cache, string $url, array $attr, int $post_ID )
-
- Filters the returned oEmbed HTML
apply_filters( 'oembed_dataparse', string $return, object $data, string $url )
WP functions:
-
- Attempts to convert a URL into embed HTML
WP_Embed::shortcode( array $attr, string $url =
): string|false''
-
-