Outils pour utilisateurs

Outils du site


informatique:wordpress

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:wordpress [14/03/2021 10:32] – [WP-Cli] cyrilleinformatique:wordpress [28/08/2023 15:25] (Version actuelle) – [Qlqs plugins] cyrille
Ligne 22: Ligne 22:
   * Settings   * Settings
     * [[https://codex.wordpress.org/Function_Reference/wp_dropdown_categories|wp_dropdown_categories]]: HTML dropdown list of categories (options: show_option_none, hierarchical, ...)     * [[https://codex.wordpress.org/Function_Reference/wp_dropdown_categories|wp_dropdown_categories]]: HTML dropdown list of categories (options: show_option_none, hierarchical, ...)
 +
 +
 +piratage [[/informatique/wordpress/weatherplllatform]]
  
 ===== Frameworks ===== ===== Frameworks =====
Ligne 28: Ligne 31:
   * [[http://smashfreakz.com/2012/11/wordpress-theme-option-frameworks/|Top 8 WordPress Theme Option Frameworks]]   * [[http://smashfreakz.com/2012/11/wordpress-theme-option-frameworks/|Top 8 WordPress Theme Option Frameworks]]
   * [[https://roots.io/sage/|Sage]] The best WordPress starter theme with a modern front-end development workflow.   * [[https://roots.io/sage/|Sage]] The best WordPress starter theme with a modern front-end development workflow.
- 
-==== Frameworks ==== 
  
 [[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. [[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.
Ligne 38: Ligne 39:
  
 [[https://github.com/ghost1227/Redux-Framework|Redux-Framework]] a fork of NHP-Theme-Options-Framework. [[https://github.com/ghost1227/Redux-Framework|Redux-Framework]] a fork of NHP-Theme-Options-Framework.
 +
 +[[https://roots.io/bedrock/|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**:
 +  * https://perfops.one/
 +
 +===== 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()''
 +  * [[https://fr.wordpress.org/plugins/gdpr-cache-scripts-styles/|GDPR Cache Scripts & Styles]]
 +
 +Quelques plugins:
 +  * [[https://fr.wordpress.org/plugins/oembed-manager/|oEmbed Manager]]
 +  * [[https://wordpress.org/plugins/gdpr-cookie-compliance/|gdpr-cookie-compliance]]
 +  * [[https://wordpress.org/plugins/cookie-law-info/|CookieYes - GDPR Cookie Consent & Compliance Notice (CCPA Ready)]]
  
 ===== Sécuriser Wordpress ==== ===== Sécuriser Wordpress ====
  
 +  * [[https://www.isitwp.com/best-wordpress-security-plugins-compared/|9 Best WordPress Security Plugins Compared (2022)]]
   * [[https://geekflare.com/find-wordpress-vulnerabilities/|9 WordPress Scanner to Find Security Vulnerabilities]] 2020   * [[https://geekflare.com/find-wordpress-vulnerabilities/|9 WordPress Scanner to Find Security Vulnerabilities]] 2020
   * [[https://securitytrails.com/blog/top-5-wordpress-vulnerability-scanners|Top 5 Wordpress Vulnerability Scanners]] 2018   * [[https://securitytrails.com/blog/top-5-wordpress-vulnerability-scanners|Top 5 Wordpress Vulnerability Scanners]] 2018
 +  * [[https://dropbear.xyz/2018/03/31/securing-wordpress-with-apparmor/|Securing WordPress with AppArmor]]
  
 +Sucuri, StackPath, SiteLock, Jetpack Security, Wordfence Security, BulletProof Security, iThemes Security, All In One WP Security & Firewall (AIOS), Shield Security
 +
 +<code>
 +// Disallow file edit
 +define( 'DISALLOW_FILE_EDIT', true );
 +</code>
 +
 +==== Monitoring & Observability ====
 +
 +  * https://perfops.one/
 +    * https://perfops.one/decalog/
  
 ==== Wordfence ==== ==== Wordfence ====
 +
 +Pare-feu d'applications Web ([[/glossaire/WAF]])
  
 [[https://wordpress.org/plugins/wordfence/|Wordfence]] [[https://wordpress.org/plugins/wordfence/|Wordfence]]
 +
  
 ==== Two-factor (2FA) ==== ==== Two-factor (2FA) ====
  
-  * [[https://wordpress.org/plugins/two-factor/|Two-factor]] plugin: 2FA with TOTP or Email+  * [[https://wordpress.org/plugins/two-factor/|Two-factor]] plugin: [[/glossaire/2fa|2FA]] with Email, [[/glossaire/u2f|FIDO Universal 2nd Factor (U2F)]], [[/glossaire/totp|Time Based One-Time Passwords (TOTP)]]
     * enable 2FA for all: https://github.com/WordPress/two-factor/issues/307#issuecomment-624843209     * enable 2FA for all: https://github.com/WordPress/two-factor/issues/307#issuecomment-624843209
 +
 +==== Single Sign On (SSO) ====
 +
  
 ==== Stream ==== ==== Stream ====
Ligne 59: Ligne 95:
  
 https://wordpress.org/plugins/stream/ https://wordpress.org/plugins/stream/
 +
 +==== PasswordLess ====
 +
 +Password less, sans mot de passe.
 +
 +  * [[https://fr.wordpress.org/plugins/tags/passwordless-login/|Étiquette de l’extension : passwordless login]]
 +  * [[https://passwordprotectwp.com/top-3-best-passwordless-plugins-for-wordpress-sites/|https://passwordprotectwp.com/top-3-best-passwordless-plugins-for-wordpress-sites/]]
  
 ==== Admin Url ==== ==== Admin Url ====
Ligne 69: Ligne 112:
   * https://wordpress.org/plugins/wps-hide-login   * https://wordpress.org/plugins/wps-hide-login
     *  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.     *  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.
 +  * L'extension https://wordpress.org/plugins/miniorange-login-with-eve-online-google-facebook/
 +  * 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
 +  * [[https://fr.wordpress.org/plugins/single-sign-on-client/|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
 +  * [[https://fr.wordpress.org/plugins/oauth-client-for-user-authentication/|WordPress OAuth client SSO( OAuth 2.0 SSO)]]
 +  * 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
 +  * https://framagit.org/Artefacts/wp_oauth2_client
  
 ===== Tricks & Tips ===== ===== 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 ====
 +
 +[[https://wpchannel.com/wordpress/tutoriels-wordpress/modifier-prefixe-base-donnees-wordpress-installation/|Modifier le préfixe de votre base de données WordPress après installation]]
  
 ==== WP-Cli ==== ==== WP-Cli ====
Ligne 80: Ligne 163:
  
 ==== Backup / Sauvegarde ==== ==== Backup / Sauvegarde ====
- 
  
 Voir [[/informatique/rsync|Rsync]]. Voir [[/informatique/rsync|Rsync]].
  
 [[https://fr.wordpress.org/plugins/updraftplus/|UpdraftPlus WordPress Backup Plugin]] [[https://fr.wordpress.org/plugins/updraftplus/|UpdraftPlus WordPress Backup Plugin]]
 +
 +==== 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''.
 +
 +<code php>
 +//
 +// 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');
 +
 +</code>
  
 ==== WP Query ==== ==== WP Query ====
Ligne 158: Ligne 257:
   * NGinx plugins: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/ (en bas de page)   * NGinx plugins: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/ (en bas de page)
  
 +W3 Total Cache API
 +<code php>
 +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>');
 +}
 +</code>
 === Varnish === === Varnish ===
  
Ligne 184: Ligne 300:
  
   * [[https://github.com/marketplace/actions/wordpress-plugin-deploy|GitHub Action, WordPress Plugin Deploy]]   * [[https://github.com/marketplace/actions/wordpress-plugin-deploy|GitHub Action, WordPress Plugin Deploy]]
 +  * [[https://thereforei.am/2011/04/21/git-to-svn-automated-wordpress-plugin-deployment/|Git to SVN: Automated WordPress Plugin Deployment]] 
 +  * [[https://github.com/deanc/wordpress-plugin-git-svn|deanc/wordpress-plugin-git-svn]] 
 +    * variante: [[https://github.com/thenbrent/multisite-user-management/blob/master/deploy.sh|thenbrent deploy.sh]] 
 +  * [[https://stackoverflow.com/questions/12520140/whats-the-correct-way-to-deploy-a-git-repo-to-wordpress-svn|What's the correct way to deploy a git repo to Wordpress SVN?]] 
 +  * [[https://learnwithdaniel.com/2019/09/publishing-your-first-wordpress-plugin-with-git-and-svn/|Publishing your first WordPress Plugin with GIT and SVN]]
 ==== Bug avec MySql et Inner Join ==== ==== Bug avec MySql et Inner Join ====
  
 [[/informatique/wordpress/wp_mysql_inner_join]] [[/informatique/wordpress/wp_mysql_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 :
 +<code php>
 +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');
 +</code>
 +
 +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()''.
 +<code php>
 +    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 ;
 +    }
 +
 +</code>
 +
  
 ==== Background & Async ==== ==== Background & Async ====
Ligne 198: Ligne 356:
   * [[https://github.com/10up/WP-Minions|WP-Minions]]   * [[https://github.com/10up/WP-Minions|WP-Minions]]
     * Listening a MQ (RabbitMQ or Gearman)     * 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 ?
 +
 +  * [[https://fr.wordpress.org/plugins/feeds-for-youtube/|YouTube Feed]]
 +  * [[https://fr.wordpress.org/plugins/yotuwp-easy-youtube-embed/|YotuWp]]
  
 ===== Qlqs plugins ===== ===== Qlqs plugins =====
Ligne 208: Ligne 375:
   * Gestion de contenu   * Gestion de contenu
     * [[https://fr.wordpress.org/plugins/enhanced-media-library/|Enhanced Media Library]] par wpUXsolutions     * [[https://fr.wordpress.org/plugins/enhanced-media-library/|Enhanced Media Library]] par wpUXsolutions
 +  * Formulaires
 +    * ContactForm7 https://contactform7.com
 +      * [[/informatique/wordpress/contactform7|contactform7]]
 +    * WPForms https://wpforms.com (ex PirateForm)
 +    * GravityForms https://www.gravityforms.com
   * Représentation et gestion du temps   * Représentation et gestion du temps
     * [[http://wordpress.org/plugins/wpit-gantt/|WPIT Gantt]] qui utilise [[http://bastianallgeier.com/gantti/|Gantti]]     * [[http://wordpress.org/plugins/wpit-gantt/|WPIT Gantt]] qui utilise [[http://bastianallgeier.com/gantti/|Gantti]]
Ligne 219: Ligne 391:
   * Gestion d'accès (droits et autres rôles)   * Gestion d'accès (droits et autres rôles)
     * [[https://wordpress.org/plugins/advanced-access-manager/|Advanced Access Manager (AAM)]] 30$     * [[https://wordpress.org/plugins/advanced-access-manager/|Advanced Access Manager (AAM)]] 30$
 +    * Un wordpress privé avec [[https://wordpress.org/plugins/wp-force-login/|Force Login]] de Kevin Vess
 +      * Simple, léger et efficace :-)
  
 [[https://emdplugins.com/free-wordpress-plugins/|WP App Studio]]'s plugins (free & not free). [[https://emdplugins.com/free-wordpress-plugins/|WP App Studio]]'s plugins (free & not free).
Ligne 238: Ligne 412:
   * [[http://docs.themeisle.com/search?query=Zerif|Search results for Zerif]] on docs.themeisle.com   * [[http://docs.themeisle.com/search?query=Zerif|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//).
 +
 +  * [[https://wordpress.org/documentation/article/embeds/|La liste des services reconnus]].
 +  * [[https://www.wpexplorer.com/wordpress-oembed/|WordPress oEmbed: Embed (Almost) Everything]] (2020)
 +
 +WP filters:
 +  * [[https://developer.wordpress.org/reference/hooks/embed_oembed_html/|embed_oembed_html]]
 +    * Filters the cached oEmbed HTML
 +    * ''apply_filters( 'embed_oembed_html', string|false $cache, string $url, array $attr, int $post_ID )''
 +  * [[https://developer.wordpress.org/reference/hooks/oembed_dataparse/|oembed_dataparse]]
 +    * Filters the returned oEmbed HTML
 +    * ''apply_filters( 'oembed_dataparse', string $return, object $data, string $url )''
 +
 +WP functions:
 +  * [[https://developer.wordpress.org/reference/classes/WP_Embed/shortcode/|WP_Embed::shortcode]]
 +    * Attempts to convert a URL into embed HTML
 +    * ''WP_Embed::shortcode( array $attr, string $url = '' ): string|false''
 +  * [[https://developer.wordpress.org/reference/functions/wp_oembed_add_provider/|wp_oembed_add_provider()]]
 +    * https://generatewp.com/oembed/
 +  * [[https://developer.wordpress.org/reference/functions/wp_embed_register_handler/|wp_embed_register_handler]]
 +    * https://wpmudev.com/blog/embedding-wordpress-oembed/
  
informatique/wordpress.1615714373.txt.gz · Dernière modification : 14/03/2021 10:32 de cyrille

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki