WordPress est un CMS (Content Management System) très utilisé sur internet, environ 60% des CMS tournent sous WordPress actuellement. Je l’utilise personnellement pour ce site mais aussi professionnellement.
J’ai référencé une liste de plusieurs portions de code source appelé Snippet ou Hook pour personnaliser WordPress, il est nécessaire de rajouter le code dans le fichier functions.php à la racine du thème que vous utilisez.
Il existe deux types de Hook dans WordPress :
- les actionsIl est possible de rajouter facilement des fonctionnalités lorsque WordPress lance le processus de construction d’une page. Exemple simple, l’action « save_post » permet de réaliser des actions supplémentaires lors de la sauvegarde d’un post (article, page ou autre).Voici certaines des actions disponibles :
- les filtresLe principe des filtres est de modifier une donnée construite par WordPress avant de l’afficher.
Voici certains filtres utiles :
Vous retrouverez l’ensemble des actions et filtres disponible en fonction de la version de WordPress sur cette page.
Voici un liste de Hooks ou Snippets que vous pouvez mettre en place sur votre WordPress :
Changer le logo de la page d’administration
Vous pouvez personnaliser le logo présent sur la page de connexion à l’administration.
function rp_my_custom_login_logo() {
echo '<style type="text/css"> h1 a { background-image:url('.get_bloginfo('template_directory').'/assets/img/logo.png) !important; } </style>';
}
add_action('login_head', 'rp_my_custom_login_logo');
Modifier le lien sur le logo de la page de connexion d’administration
function rp_custom_login_url($url) {
return 'https://romain.planel.fr';
}
add_filter( 'login_headerurl', 'rp_custom_login_url' );
Bloquer la console d’administration wordpress pour les Non Administrateurs
Ce code redirige les utilisateurs (autres que les administrateurs) sur la homepage lorsqu’il accède à l’administration wordpress.
function rp_blockusers_init() {
if ( is_admin() && ! current_user_can( 'administrator' ) ) {
wp_redirect( home_url() );
exit;
}
}
add_action( 'init', 'rp_blockusers_init' );
Ne pas afficher la barre d’administration wordpress pour les Non Administrateurs
Code à rajouter dans le fichier function.php :
function rp_no_admin_bar() {
if (!current_user_can('administrator') && !is_admin()) {
show_admin_bar(false);
}
}
add_action('after_setup_theme', 'rp_no_admin_bar');
Ajouter une taille d’image personnalisé
Dans notre exemple, j’ajoute une nouvelle taille nommé « taille-perso » de 350×200 pixels.
if ( function_exists( 'add_image_size' ) ) {
add_image_size( 'taille-perso', 350, 200, true );
}
function rp_my_image_sizes($sizes) {
$addsizes = array(
"taille-perso" => __( "Taille Perso")
);
$newsizes = array_merge($sizes, $addsizes);
return $newsizes;
}
add_filter('image_size_names_choose', 'rp_my_image_sizes');
Insertion script Google Analytics
Insertion du code suivant, issu en grande partie de votre administration google analytics, dans le pied de page du site, en général le fichier footer.php :
function rp_add_googleanalytics() { ?>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXX-X"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-XXXXXXXX-X');
</script>
<?php }
add_action('wp_footer', 'rp_add_googleanalytics');
Ajouter des champs personnalisé dans le profil utilisateur
Ajouter ce code dans le fichier functions.php
function rp_user_fields( $userfields) {
// On ajoute Instagram
$userfields['instagram'] = 'Instagram';
//On ajoute Facebook
$userfields['facebook'] = 'Facebook';
return $userfields;
}
add_filter('user_userfields','rp_user_fields',10,1);
Et ce code dans le thème pour afficher les champs supplémentaires.
// On récupère l'auteur
<?php
$curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));
?>
// On affiche nos champs supplémentaires
<p>Profil Instagram: <?php echo $curauth->instagram; ?></p>
<p>Profil Pinterest: <?php echo $curauth->pinterest; ?></p>
Supprimer des Widgets de l’administation WordPress
Ajouter ce code dans le fichier functions.php afin de supprimer en totalité ou partiellement les widgets de la page d’accueil d’administration WordPress
function rp_remove_dashboard_widgets() {
global $wp_meta_boxes;
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_drafts']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
}
add_action('wp_dashboard_setup', 'rp_remove_dashboard_widgets' );
Ajouter des Custom Post Type dans les recherches WordPress
Ajouter ce code dans le fichier functions.php
function rp_searchAll( $query ) {
if ( $query->is_search ) { $query->set( 'post_type', array( 'nom_post_type_1','nom_post_type_2','nom_post_type_3'));
}
return $query;
}
add_filter( 'the_search_query', 'rp_searchAll' );
Gérer les révisions d’articles
A chaque fois que vous enregistrez un article, une révision est rajouté, ainsi vous êtes capable de revenir aux précédentes version de votre article. Un enregistrement automatique, toute les 2 minutes, de l’article en cours d’édition est aussi disponible.
Il est possible de gérer le nombre de révisions disponibles ainsi que l’interval d’enregistrement automatique en rajoutant des paramètres dans le fichier wp-config.php
Modifier le nombre de versions de l’article à 8 :
define('WP_POST_REVISIONS', 8 );
Conserver toute les révisions :
define('WP_POST_REVISIONS', true );
Ne pas conserver de révisions :
define('WP_POST_REVISIONS', false );
Enregistrement automatique toute les 5 minutes (300 secondes) :
define('AUTOSAVE_INTERVAL', 300);
Autoriser l’upload d’un format de fichier spécifique dans les médias
Il est possible d’uploader différents formats de fichier dans les médias à savoir :
- Fichiers images : .jpg, .png, .gif et .ico ;
- Fichiers documents : .pdf, .doc, .docx, .ppt, .pptx, .pps, .ppsx, .odt, .xls, .xlsx, .psd ;
- Fichiers audio : .mp3, .m4a, .ogg, .wav ;
- Fichiers vidéo : .mp4, .m4v, .mov, .wmv, .avi, .mpg, .ogv, .3gp, .3g2 ;
Si vous désirez rajouter un format spécifique, voici le code à rajouter dans le fichier function.php
function rp_mimes_types($mime_types){
$mime_types['pgp'] = 'application/pgp-signature';
$mime_types['pretty good privacy'] = 'Pretty Good Privacy - Signature';
return $mime_types;
}
add_filter('upload_mimes', 'rp_mimes_types', 1, 1);
Pour connaitre les différents Mimes Types, voici une liste disponible ici.
Afficher un copyright dynamique dans le pied de page
Ajouter, pour commencer, ce code à l’endroit ou vous voulez afficher le copyright (en général dans le fichier footer.php du template) :
<?php echo rp_binf_dynamic_copyright(); ?>
Ajouter, ensuite, ce code dans le fichier functions.php
function rp_binf_dynamic_copyright() {
global $wpdb;
$copyright_dates = $wpdb->get_results("
SELECT
YEAR(min(post_date_gmt)) AS firstdate,
YEAR(max(post_date_gmt)) AS lastdate
FROM
$wpdb->posts
WHERE
post_status = 'publish'
");
$output = '';
if($copyright_dates) {
$copyright = "© " . $copyright_dates[0]->firstdate;
if($copyright_dates[0]->firstdate != $copyright_dates[0]->lastdate) {
$copyright .= '-' . $copyright_dates[0]->lastdate;
}
$output = $copyright;
}
return $output;
}
Afficher un screenshot d’un site web
Il est possible de réaliser un screenshot
function rp_screenshot_shortcode($atts) {
extract(shortcode_atts(array(
"url" => "http://google.com", // URL du site a capturer
"alt" => "Capture ecran", // attribut alt de la capture
"w" => "450", // largeur de la capture
"h" => "300" // hauteur de la capture
), $atts));
return '<img src="http://s.wordpress.com/mshots/v1/' . esc_url($url) . '?w=' . (int)$w . '&h=' . (int)$h . '" alt="' . esc_attr($alt) . '"/>';
}
add_shortcode("webscreenshot", "rp_screenshot_shortcode");
Utilisez le shortcode suivant dans la page wordpress :
[_webscreenshot url="https://www.lemonde.fr/" alt="Le Monde" w="450" h="300"]
Voici l’exemple de la une du monde à cette instant :[webscreenshot url= »https://www.lemonde.fr/ » alt= »Le Monde » w= »450″ h= »300″]
Rediriger un utilisateur après son inscription
Il est possible de rediriger l’utilisateur sur une page après son inscription dans WordPress en rajoutant ce code dans functions.php en modifiant « page-de-redirection » par la page sur laquelle rediriger :
function rp_redirect_members(){
return home_url( '/page-de-redirection/' );
}
add_filter( 'registration_redirect', 'rp_redirect_members' );
Activer les Shortcodes dans le widget texte
Il est nécessaire d’ajouter ce code dans functions.php afin de permettre l’utilisation des shortcode dans le widget texte de wordpress :
add_filter('widget_text','do_shortcode');
Activer le PHP dans le widget texte
Il est nécessaire d’ajouter ce code dans functions.php afin de permettre l’utilisation de PHP dans le widget texte de wordpress :
function rp_php_text($text) {
if (strpos($text, '<' . '?') !== false) { ob_start(); eval('?' . '>' . $text);
$text = ob_get_contents();
ob_end_clean();
}
return $text;
}
add_filter('widget_text', 'rp_php_text', 99);
Insérer l’image à la une dans le flux RSS
Ce code est à rajouter dans functions.php .
function rp_rss_post_thumbnail($content) { global $post; $content =''; if(has_post_thumbnail($post->ID)) { $content = '< p>' . get_the_post_thumbnail($post->ID , 'full') . '</ p>' . get_the_excerpt(); } return $content; } add_filter('the_excerpt_rss', 'rp_rss_post_thumbnail'); add_filter('the_content_feed', 'rp_rss_post_thumbnail');
Limiter la longueur des titres
Ce code est à rajouter dans functions.php , il faut modifier le maxlength.
function rp_title_chars_limit() { ?>
<script>jQuery( 'input#title' ).attr( 'maxlength', 50 );</script>
<?php }
add_action( 'admin_footer', 'rp_title_chars_limit' );
Modifier la longueur de l’extrait d’article
Par défaut le nombre de mot d’un extrait est de 50, nous allons le modifier à 20 mots dans notre exemple. Ce code est à rajouter dans functions.php .
function rp_post_excerpt($length) { return 20; } add_filter('excerpt_length', 'rp_post_excerpt');
Mettre une longueur minimum de mot dans un article
Nous allons mettre un minimum de 250 mots minimum. Ce code est à rajouter dans functions.php .
function rp_min_words($content){
global $post;
$num_words = 250;
$content = $post->post_content;
if (str_word_count($content) < $num_words)
wp_die( __('Votre article doit contenir au moins 300 mots pour être publié.') );
}
add_action('publish_post', 'rp_min_words');
Mettre une longueur minimum de caractères dans les commentaires
Nous allons mettre un minimum de 50 caractères minimum. Ce code est à rajouter dans functions.php .
function rp_minimum_comment_length( $commentdata ) {
$minimumCommentLength = 50;
if ( strlen( trim( $commentdata['comment_content'] ) ) < $minimalCommentLength ){
wp_die( 'Les commentaires doivent contenir au minimum ' . $minimalCommentLength . ' caractères.' );
}
return $commentdata;
}
add_filter( 'preprocess_comment', 'rp_minimum_comment_length' );
Modifier la compression des images JPEG
Ce code est à rajouter dans functions.php .
add_filter( 'jpeg_quality', create_function( '', 'return 70;' ) );
Dans notre exemple nous avons mis la compression à 70 ce qui correspond à une compression de 30%. Cette modification sera effective sur les nouveaux JPEG que l’on ajoute mais pas sur les anciens.
Insérer l’année en cours à l’aide d’un shortcode
Ce code est à rajouter dans functions.php .
function rp_year_shortcode() {
$year = date('Y');
return $year;
}
add_shortcode('year', 'rp_year_shortcode');
[ year][/year]
Exemple d’affichage de l’année : [year][/year]
Exclure des articles ou des pages d’une recherche
Nous allons exclure les publications avec l’ID 15 et 18. Ce code est à rajouter dans functions.php .
function rp_SearchFilter($query) {
if ($query->is_search) {
$query->set('cat','15,18');
}
return $query;
}
add_filter('pre_get_posts','rp_SearchFilter');
Envoyer un mail lors de la mise en ligne d’une publication
Ce code est à rajouter dans functions.php .
function rp_email_friends( $post_ID ) {
$destinataires = 'mail1@planel.fr, mail2@planel.fr';
wp_mail( $destinataires , "Blog de Romain PLANEL", 'Une nouvelle publication est maintenant en ligne sur le site https://romain.planel.fr' );
return $post_ID;
}
add_action( 'publish_post', 'rp_email_friends' );
Ajouter un texte par défaut à la création d’une page ou article
Ce code est à rajouter dans functions.php .
function rp_default_texte( $content ) {
global $post_type;
if ( $post_type == 'page' ) {
$content = "Texte par défaut pour les pages";
} else {
$content = "Texte par défaut pour les articles";
}
return $content;
}
add_filter('default_content', 'rp_default_texte');
Ouvrir les liens externe du menu dans un nouvel onglet
Ce code est à rajouter dans functions.php . Si le lien ne commence pas par « https://romain.planel.fr », on rajoute un target à _blank
function rp_external_nav_link( $atts ) {
// Si l'URL ne commence pas par mon domaine
if ( ! preg_match( '/^https:\/\/romain\.planel\.fr/', $atts['href'] ) ) {
$atts['target'] = '_blank';
}
return $atts;
}
add_filter( 'nav_menu_link_attributes', 'rp_external_nav_link' );
Supprimer « Privé » ou « Protégé » du titre d’une publication dont la visibilité est privé ou protégé
Lorsque vous créé une publication, vous pouvez modifier sa visibilité (rajouter un mot de passe pour « Protégé » ou en « Privé), le terme « Protégé » ou « Privé » est automatique rajouté devant le titre. A l’aide de ce code à rajouter dans functions.php vous allez le supprimer.
function rp_removePrivatePrefix($format) {
return '%s';
}
add_filter('private_title_format', 'rp_removePrivatePrefix');
add_filter('protected_title_format', 'rp_removePrivatePrefix');
0 commentaire