WordPress, collection de fonctions pour l’admin

Voici une liste de fonctions en vrac pour le fichier functions.php (ou assimilé) de WordPress. Je les ai utilisé il y a plus ou moins longtemps pour custom/limiter la partie administration d’un projet sous WordPress, elles sont à adapter pour la plupart.

Certaine fonctions peuvent être rassemblés en une seul (comme les if (!current_user_can('administrator'))), elles sont séparées pour plus de lisibilité.

Supprimer tous les update :

function remove_core_updates(){
global $wp_version;return(object) array('last_checked'=> time(),'version_checked'=> $wp_version,);
}
add_filter('pre_site_transient_update_core','remove_core_updates');
add_filter('pre_site_transient_update_plugins','remove_core_updates');
add_filter('pre_site_transient_update_themes','remove_core_updates');

Redirection sur le home à la déconnexion

add_action('wp_logout','go_home');
function go_home(){
  wp_redirect( home_url() );
  exit();
}

Fixer les options des images avec des valeurs par défauts

update_option( 'image_default_align', 'center' );
update_option('image_default_link_type','none');
update_option( 'image_default_size', 'large' );

Rendre invisible des class css pour tous les rôles autre que admin

function restrict_post_edition(){
	if( !current_user_can('administrator') )
	{
		 echo "
		<style>
		.a-editer-1,
		.a-editer-2
		{ display:none; }                            
		</style>
"; } }
add_action('wp_head', 'restrict_post_edition',10,1);

Rendre invisible des class css pour tous les rôles

function remove_admin_not_use() {
  echo "
		<style>
		.a-editer-1,
		.a-editer-2
		{ display:none; }                            
	</style>
"; }
add_action('admin_head', 'remove_admin_not_use');

Suppression du bandeau admin pour tous les rôles en dehors de l’admin

function remove_admin_bar() {
	if (!current_user_can('administrator') && !is_admin())
	{
	  show_admin_bar(false);
	}
}
add_action('after_setup_theme', 'remove_admin_bar');

Suppressions d’éléments (box) de l’éditeur pour les non admin

function remove_not_use_except_admin() {
	if (!current_user_can('administrator'))
	{
		remove_meta_box('ml_box','page','advanced');			/* suppression de la box Langues */
		remove_meta_box('pageparentdiv','page','advanced');		/* suppression de la box Attributs */
		remove_meta_box('postcustom','page','advanced');		/* suppression de la box Champs personnalisés */
		remove_meta_box('commentstatusdiv','page','advanced');		/* suppression de la box Discussions */
		remove_meta_box('commentsdiv','page','advanced');		/* suppression de la box Commentaires */
		remove_meta_box('slugdiv','page','advanced');			/* suppression de la box Identifiant */
		remove_meta_box('authordiv','page','advanced');			/* suppression de la box Auteur */
		remove_meta_box('postimagediv','page','advanced');		/* suppression de la box Image à la une */
		remove_meta_box('ez-toc','page','advanced');			/* suppression de la box Table of Content*/
		    }
}
add_action('admin_head','remove_not_use_except_admin', 10,1);

Dans insérer média supprime : image à la une & insérer des liens externe pour les images

function remove_media_tab($strings) {
	unset($strings["insertFromUrlTitle"]);
    unset($strings["setFeaturedImageTitle"]);
	return $strings;
}
add_filter('media_view_strings','remove_media_tab');

Avoir uniquement h1,h2,h3,h4,pre dans le menu déroulant de l’éditeur de texte

function myformatTinyMCE($in) {
  $in['block_formats'] = "Paragraph=p;Title 1=h1;Title 2=h2;Title 3=h3;Title 4=h4;Preformatted=pre";
  return $in;
}
add_filter('tiny_mce_before_init', 'myformatTinyMCE' );

Ajouter une Meta Box dans la partie lecture

function add_custom_meta_box() {
    add_meta_box("demo-meta-box", "Aide & Liens", "test_meta_box", "page", "side", "high", null);
}
add_action("add_meta_boxes", "add_custom_meta_box");

Contenu de la Meta Box

function test_meta_box()
{
    ?>
CONTENU DE LA METABOX
    <?php  

Fixer la limite de page visible par page dans l’admin (ici 2000)

add_filter( 'get_user_metadata', 'pages_per_page_wpse_23503', 10, 4 );
function pages_per_page_wpse_23503( $check, $object_id, $meta_key, $single )
{ 
    if( 'edit_page_per_page' == $meta_key )
        return 2000;

    return $check;
}

Laisser un commentaire

Votre adresse de messagerie ne sera jamais publiée, ou utilisée à des fins commerciales. Les champs obligatoires sont indiqués avec des *.

Vous pouvez utiliser les balises de mise en forme