Pour les développeurs
piratage weatherplllatform
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:
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:
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 );
Pare-feu d'applications Web (WAF)
All-In-One Security (AIOS) – Security and Firewall (WAF)
https://wordpress.org/plugins/all-in-one-wp-security-and-firewall/
Pour conserver les traces (QQQ) de toutes les actions dans Wordpress.
Password less, sans mot de passe.
Changer l'url pour se connecter et de l'admin
Le plugin de MiniOrange
Le plugin de Dash10 Digital
Celui de steve06
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
local user ↔ remote user
”.maintenance
à la racine du site ;wp-content/upgrade
;wp_options.option_name = core_upgrader.lock
.Il se peut qu'il n'y ai aucun fichier mais seulement le ligne dan la BdD.
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');
Dans une catégorie et dans d'autres:
$q = new \WP_Query([ 'cat'=> $cat->term_id, 'category__in'=> $another_categories_term_id, ...
# 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);
Côté back
Côté front
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' );
Pour faire tourner Wordpress avec Nginx.
Wordpress gère nativement un cache (WordPress object cache) pour toutes ses données (transients, options, meta, posts, users …)
Avec APCu
define('WP_APCU_KEY_SALT','<unique key>');
Avec Memcached
Autre trucs:
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>'); }
WordPress with Varnish
In wp-config.php
:
define('FS_METHOD','direct');
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 ; }
Job, Runner …
Récupérer les videos d'une chaine (Channel) Youtube.
Une clé Google API est-elle nécessaire ?
WP App Studio's plugins (free & not free).
Migrer un site:
WordPress oEmbed reconnait les URLs de quelques services et formate automatiquement le contenu à partir de l'URL (version >= 2.9).
WP filters:
apply_filters( 'embed_oembed_html', string|false $cache, string $url, array $attr, int $post_ID )
apply_filters( 'oembed_dataparse', string $return, object $data, string $url )
WP functions:
WP_Embed::shortcode( array $attr, string $url =
): string|false''