Bloquer l’accès au back-office de WordPress pour un rôle utilisateur

Source : https://wpchannel.com/wordpress/tutoriels-wordpress/bloquer-acces-utilisateurs-wordpress/

Vous disposez de comptes utilisateurs mais vous ne souhaitez pas que ces derniers accèdent aux back-office de WordPress ? Le recours à ces quelques lignes de code vous permettra d’exclure les utilisateurs avec le rôle d’abonné de votre administration.

De nombreux sites WordPress autorisent l’enregistrement de comptes utilisateurs avec des usages exclusivement limités au front-office : espace client, zone réservée aux membres, forum… les cas sont multiples et variés pour justifier un tel blocage du back-office.

L’exemple ci-dessous exclut les abonnés mais à vous de l’adapter selon vos besoins :

/* Bloquer accès aux non-admins */
function wpc_block_dashboard() {
	$file = basename($_SERVER['PHP_SELF']);
	if (is_user_logged_in() && is_admin() && !current_user_can('edit_posts') && $file != 'admin-ajax.php') {
		wp_redirect( home_url() );
		exit();
	}
}
add_action('init', 'wpc_block_dashboard');

Vous pouvez modifier la capacité en changeant edit_posts par celle de votre choix conformément au codex.

Ajouter des icônes sur vos items de menus WordPress

Source : https://wpchannel.com/wordpress/plugins-wordpress/ajouter-icones-menus-wordpress/

Un menu de navigation se compose d’items reliant les contenus de votre site sous forme d’une arborescence logique. Afin d’améliorer l’expérience utilisateur, il n’est pas rare d’ajouter un icône avant ou après l’élément de manière à mémoriser visuellement ce dernier. Grâce à l’extension Menu Icons, disponible gratuitement, nous allons voir qu’une telle fonctionnalité est très simple à mettre en oeuvre et ne nécessite pas le recours à des techniques complexes telles que les walkers.

Principales fonctionnalités

Menu Icons s’intègre directement dans l’outil de conception de menus de WordPress sous Apparence puis Menus. Déroulez l’élément pour lequel vous souhaitez ajouter un icône puis cliquez sur Select. Si une telle option n’apparait pas, vérifiez dans l’onglet Options de l’écran situé en haut à droite de votre écran, que le bloc Menu Icons Settings est bien coché.

Une fenêtre modale apparait alors sur la même apparence que l’envoi de médias sous WordPress. Dans la colonne de gauche, faites votre choix parmi les polices personnalisées proposées (Dashicons, Elusive Icons, Font Awesome, Foundation Icons, Genericons, Fontello) ou bien envoyez vos propres fichiers SVG ou images.

Sélectionnez l’icône de votre choix et configurez les différentes propriétés disponibles sur la partie droite de votre écran (positionnement de l’icône, masquer le label, alignement vertical et taille).

Captures d’écran

wordpress-menu-icons-2
wordpress-menu-icons-3
wordpress-menu-icons-2

Obtenir Menu Icons

Vous pouvez télécharger gratuitement cette extension depuis votre administration WordPress ou à partir du répertoire officiel via ce lien :Menu Icons

Ajouter facilement des icônes dans vos menus de navigation.Taille 1 000,0 Ko  • Hits : 1 705

Une solution efficace, propre et pratique pour permettre à l’utilisateur final de modifier ses icônes de menus sans coder.

Autoriser les contributeurs à envoyer des fichiers dans WordPress

Source : https://wpchannel.com/wordpress/tutoriels-wordpress/autoriser-contributeurs-envoyer-fichiers-wordpress/

Les utilisateurs avec le rôle contributeur ne disposent pas des autorisations nécessaires pour envoyer des médias dans la bibliothèque de WordPress. Une restriction plutôt gênante dans le cadre d’un site multi-auteur. Une astuce permet de contourner le problème via un bout de code PHP.

Comme à l’accoutumée avec ce genre d’astuce, il convient de copier / coller le code dans le fichier functions.php de votre thème à l’aide de votre client FTP favori. Ce fichier est présent dans le dossier /wp-content/themes/NOM_DU_THEME/

/* Allow Contributors to Upload Files */
function wpc_allow_contributors_upload_files() {
	if (current_user_can('contributor') && !current_user_can('upload_files'))
	add_action('admin_init', 'allow_contributor_uploads');
	function allow_contributor_uploads() {
		$contributor = get_role('contributor');
		$contributor->add_cap('upload_files');
	}
}

Créez donc un compte avec le rôle contributeur et connectez-vous avec. Allez dans Articles puis Ajouter et notez la présence du bouton Ajouter un média dans l’éditeur de contenu. Magique non ?

wordpress-add-media-button

Les capacités propres à chaque rôle utilisateur WordPress sont définies dans un tableau complet sur le Codex. Il est donc facile de modifier les rôles par défaut et de leur affecter des autorisations complémentaires sans forcément avoir recours à une extension telle que User Role Editor.

Désactiver une taxonomie WordPress

Source : https://wpchannel.com/wordpress/tutoriels-wordpress/desactiver-taxonomie-wordpress/

Les extensions et les thèmes WordPress ont souvent recours aux taxonomies afin de classer vos contenus et ainsi proposer des filtres de recherche pour vos utilisateurs. En natif, les catégories et les étiquettes sont des taxonomies pour les articles mais la plupart des projets en utilisent pour couvrir leurs propres besoins. Un simple hook nous permet de les désactiver.

N.B : l’astuce présentée ici ne s’applique pas aux catégories et aux étiquettes de WordPress. De plus, ce type de modification n’est pas sans conséquence : il est probable que vous deviez adapter votre thème et / ou les extensions concernées.

Dans le fichier functions.php de votre thème ou via un mu-plugins, collez ces ligne de code :

<?php if (!defined('ABSPATH')) die('Restricted Area');
/*
* Plugin Name: Unregister Taxonomies
* Description: Properly disable any WordPress taxonomy.
* Version: 20160901
* Author: Aurélien Denis (Neticpro)
* Author URI: https://wpchannel.com/desactiver-taxonomie-type-de-contenu-personnalise/
*/
function wpc_unregister_job_listing_type() {
	unregister_taxonomy('job_listing_type'); // Specify the taxonomy to unregister
}
add_action('init', 'wpc_unregister_job_listing_type');

mu-unregister-taxonomies.phpaffichage brut

Vous devez modifier la ligne 12 et spécifier les taxonomies que vous souhaitez désactiver. Pour l’identifier, ouvrez celle concernée dans votre back-office puis récupérez l’identifiant à partir de l’URL. Un exemple ci-dessous avec l’extension WP Job Manager pour les types d’offres :

/wp-admin/edit-tags.php?taxonomy=job_listing_type&post_type=job_listing

Ici, la taxonomie est job_listing_type.

Notez que la désactivation d’une taxonomie ne supprime en rien les termes qui lui auraient été préalablement affectés. Je vous recommande donc de les supprimer en amont. Une fois le code en place, vous obtiendrez le message suivant :

wordpress-taxonomie-invalide

Retirez les lignes de code et vous pourrez de nouveau utiliser la taxonomie.

Prenez garde également à d’éventuelles erreurs PHP qui pourraient survenir. En effet, certaines fonctionnalités d’un thème ou d’une extension dépendent bien souvent de la présence d’une taxonomie.

Au delà de l’aspect simplificateur du back-office pour votre client, la désactivation d’une taxonomie prévient la création de termes inutiles bien souvent néfastes pour votre référencement…

Supprimer le préfixe des titres des archives sous WordPress (catégories, étiquettes, auteur, etc.)

Source : https://wpchannel.com/wordpress/tutoriels-wordpress/supprimer-prefixe-titres-archives-categories-etiquettes-auteur/

L’ensemble des pages d’archives de votre WordPress affichent par défaut un préfixe qui n’apporte aucun intérêt pour l’internaute : Catégorie, Étiquette, Auteur, etc. À l’aide de quelques lignes de code, il est possible de modifier globalement l’ensemble des titres afin de retirer ce préfixe inutile.Vous recherchez un développeur WordPress capable de vous créer un thème sur-mesure ? C’est mon métier depuis plus de 8 ans, prenez contact et discutons de votre projet.

Pour appliquer cette astuce, copiez / collez ces lignes de code dans le fichier functions.php de votre thème enfant.

/* Retirer les préfixes sur les pages d'archives */
function wpc_remove_archive_title_prefix() {
	if (is_category()) {
			$title = single_cat_title('', false);
		} elseif (is_tag()) {
			$title = single_tag_title('', false);
		} elseif (is_author()) {
			$title = '<span class="vcard">' . get_the_author() . '</span>' ;
		} elseif (is_post_type_archive()) {
			 $title = post_type_archive_title('', false);
		}
	return $title;
}
add_filter('get_the_archive_title', 'wpc_remove_archive_title_prefix');

Un exemple avec le thème par défaut Twenty Seventeen et l’affichage d’une page de catégorie relative à l’économie. Notez la présence du préfixe Catégorie.

À présent, la même page avec les lignes de code en place sur votre site.

L’astuce présentée repose sur l’utilisation d’un filtre qui permet d’appliquer des changements globaux sans éditer manuellement chaque fichier PHP.

Ajouter le support des catégories dans vos pages WordPress

Source : https://wpchannel.com/wordpress/tutoriels-wordpress/ajouter-support-categories-pages-wordpress/

Les catégories sous WordPress sont actives pour vos articles mais comme n’importe quelle taxonomie vous pouvez en disposer pour d’autres types de contenus comme les pages. Cette technique permet de croiser l’information et d’utiliser l’identifiant de la catégorie dans vos URLS.

Commencez par créer un mu-plugin puis collez ces lignes de code à l’intérieur :

/* Activer le support des catégories pour les pages */
function wpc_cat_pages() {
	register_taxonomy_for_object_type('category', 'page');
}
add_action('init', 'wpc_cat_pages');

Une fois le fichier déposé dans votre répertoire /wp-content/mu-plugins/, retournez dans votre back-office WordPress puis notez l’apparition des catégories pour les pages. Le fonctionnement habituel opère, il suffit d’éditer un contenu pour lui assigner une catégorie.

J’ai appliqué cette technique sur ce site pour mes pages de prestations afin de disposer de la catégorie dans l’URL. Vous pouvez étendre cela à d’autres types de contenus personnalisés en passant un tableau de valeur à la ligne 3.

Accéder à la liste des modules Jetpack par WordPress.com

Source : https://wpchannel.com/wordpress/tutoriels-wordpress/acceder-liste-modules-jetpack-wordpress-com/

Jetpack par WordPress.com est une extension pour WordPress proposée à l’origine pour la plateforme commerciale wordpress.com qui incorpore de nombreux modules plus ou moins utiles. Avec la disparition de la liste complète des modules Jetpack, il reste un moyen d’accéder à celle-ci afin d’obtenir une vue simple des modules actifs ou inactifs.

Rendez-vous dans Jetpack puis Réglages et descendez en bas de page. Cliquez sur Débogage puis Accédez à la liste complète des modules Jetpack disponibles sur votre site.

Il ne vous reste plus qu’à cocher ou décocher les modules de votre choix en fonction de vos besoins.

Afficher les sous catégories (termes) d’une taxonomie dans un menu personnalisé

Source : https://wpchannel.com/wordpress/tutoriels-wordpress/afficher-categories-termes-dune-taxonomie-menu-personnalise

La fonction get_term_children de WordPress nous permet de créer une liste de termes enfants en se basant sur l’élément parent en cours de visite. C’est une méthode efficace pour créer un menu de navigation interne à vos différents pages d’archives de termes (catégories, étiquettes ou taxonomie personnalisée).Vous recherchez un développeur WordPress capable de vous créer un thème sur-mesure ? C’est mon métier depuis plus de 8 ans, prenez contact et discutons de votre projet.

Rappelons tout d’abord quelques bases d’architecture sous WordPress.

Nous avons des types de contenus que sont les articles, les pages ou encore ceux que vous créez qui peuvent disposer de taxonomies comme les catégories et les étiquettes pour les articles ou encore une fois celles que vous générez.

Les termes peuplent les taxonomies bien que l’on emploie couramment le mot catégorie par abus de langage. De même, un sous terme ou une sous catégorie est un élément enfant dans une taxonomie hiérarchique.

À titre d’exemple, j’utilise cette fonction PHP dans les catégories WordPress et WooCommerce de ce site afin de lister les sous catégories rattachées aux catégories en question. Cela permet une approche en silo qui est favorable à un bon référencement.

Vous pouvez donc modifier votre thème et principalement le fichier archive.php ou équivalent dans la hiérarchie des modèles.

<?php
	$queried_object = get_queried_object();
	$taxonomy = $queried_object->taxonomy;
	$term_id = $queried_object->term_id;
	$taxonomy_name = 'category';
	$term_children = get_term_children($term_id, $taxonomy_name);
	echo '<ul class="nav nav-pills">';
		foreach ($term_children as $child) {
			$term = get_term_by('id', $child, $taxonomy_name);
			echo '<li><a class="btn btn-default" href="' . get_term_link($child, $taxonomy_name) . '">' . $term->name . '</a></li>';
		}
	echo '</ul>';
?>

wp_list_children_terms.phpaffichage brut

Vous remarquez au passage l’ajout de quelques classes CSS issues de Bootstrap que vous pouvez supprimer ou modifier selon vos besoins.

Le code de WordPress regorge de fonctions PHP souvent méconnues et pourtant très utiles.