web-dev-qa-db-fra.com

Rendre l'élément coché par défaut pour tous les utilisateurs dans le volet "Options d'écran"

Lorsque vous êtes dans le tableau de bord, les options cochées et non cochées dans le volet "Options d'écran" me paraissent complètement aléatoires et arbitraires et créent beaucoup de confusion lorsque quelque chose n'apparaît pas pour que vous ayez besoin de ce "devrait" mais n'est pas. Existe-t-il un moyen d'influencer laquelle de ces options est cochée et de la rendre visible pour tous les utilisateurs?

3
cmcculloh
1
mike23

1) Copiez ces codes, collez-les dans votre éditeur et enregistrez-le sous enable_custom_field.php . Créez ensuite un dossier nommé " Activer le champ personnalisé par défaut " et placez ce fichier PHP dans ce dossier. Comme ça, tu as créé avec ton propre plugin. Il suffit de mettre ce dossier dans votre dossier de plug-in et de l'activer dans votre page d'administration.

<?php 
/* 
Plugin Name: Enable Custom Fields per Default
Version:     1.0
Required:    3.1
Author:      Thomas Scholz
Author URI:  http://toscho.de
License:     GPL
*/
! defined( 'ABSPATH' ) and exit;
add_filter( 'default_hidden_meta_boxes', 'enable_custom_fields_per_default', 20, 1 );

/**
 * Removes custom fields from the default hidden elements.
 *
 * The original ( wp-admin/includes/template.php#get_hidden_meta_boxes() ):
 * array(
 *      'slugdiv',
 *      'trackbacksdiv',
 *      'postcustom',      <-- we need this
 *      'postexcerpt',
 *      'commentstatusdiv',
 *      'commentsdiv',
 *      'authordiv',
 *      'revisionsdiv'
 * )
 *
 * It has no effect if the user has decided to hide the box.
 * This option is saved in "metaboxhidden_{$screen->id}"
 *
 * @param  array $hidden
 * @return array $hidden
 */
function enable_custom_fields_per_default( $hidden )
{
    foreach ( $hidden as $i => $metabox )
    {
        if ( 'postcustom' == $metabox )
        {
            unset ( $hidden[$i] );
        }
    }
    return $hidden;
}
?>

2) J'ai essayé celui-ci en créant un nouvel utilisateur dans ma page d'administrateur et connecté avec cet utilisateur. Les champs personnalisés se trouvent dans la section d'édition de ma page. Ça a marché comme sur des roulettes.

0
Vijaya Narayanasamy

le lien de mike23 donne l'indice à la fonction suivante:

// add_action('user_register', 'wpse20505_set_user_metaboxes');
add_action('admin_init', 'wpse20505_set_user_metaboxes');
function wpse20505_set_user_metaboxes($user_id=NULL) {
    $meta_key['hidden'] = 'metaboxhidden_dashboard';
    $meta_value = array(
        'dashboard_incoming_links',
        'dashboard_plugins',
        'dashboard_primary',
        'dashboard_quick_press',
        'dashboard_recent_comments',
        'dashboard_recent_drafts',
        'dashboard_right_now',
        'dashboard_secondary'
    );
    $blogusers = get_users('blog_id=1');
    foreach ($blogusers as $user) {
        // this conditional will check if the user already set his preferences and may be removed if wanted
        if ( ! get_user_meta( $user->ID, $meta_key['hidden'], true) ) {
            update_user_meta( $user->ID, $meta_key['hidden'], $meta_value );
        }
    }
}

Le admin_init doit être exécuté une seule fois, puis user_register peut être activé pour configurer le tableau de bord pour les nouveaux utilisateurs.

Le tableau meta_value contient tous les widgets et peut être personnalisé selon vos besoins.

0
brasofilo