web-dev-qa-db-fra.com

Supprimer le nom du site du formulaire d'inscription - Multisite

Comment pouvez-vous supprimer le champ 'Nom du site' dans le formulaire de registre pour un multisite?

Lorsque les utilisateurs s'inscrivent, j'aimerais simplement qu'ils entrent le "nom d'utilisateur", le "courrier électronique" et le "nom de domaine". J'ai essayé de le supprimer avec CSS mais je ne peux pas, car il s'agit d'un champ obligatoire (à remplir obligatoirement).

Si quelqu'un veut savoir pourquoi je dois le faire, c'est parce que mon multisite est conçu pour un usage spécifique et n'utilise pas du tout les titres de sites. Un seul site par utilisateur et un seul utilisateur administrateur par site sont autorisés. Chaque site affiche le nom d'affichage de l'administrateur utilisateur en haut de chaque site au lieu du titre du site.

Toute aide appréciée.

5
user3438958

Si vous examinez le code source de la page "Ajouter un nouveau site", vous constaterez que WordPress ne fournit pas de point d'ancrage à cette fin. Bien sûr, il serait possible d’ajouter un crochet vous-même, mais c’est généralement une mauvaise pratique d’éditer le noyau WordPress.

Cependant, une fois que toutes les informations sont présentes, la page appelle la fonction wpmu_create_blog(). Dans cette fonction, il y a un hook appelé, à savoir l'action wpmu_new_blog:

do_action( 'wpmu_new_blog', $blog_id, $user_id, $domain, $path, $site_id, $meta );

À ce stade, le blog est déjà créé. Cependant, nous pouvons toujours détecter si un champ a été soumis en accrochant cette action et en l'enregistrant dans la base de données. Nous ajoutons les éléments suivants dans notre fichier de plugin (ou modèle):

function add_new_blog_field($blog_id, $user_id, $domain, $path, $site_id, $meta) {    
    // Make sure the user can perform this action and the request came from the correct page.   
    switch_to_blog($blog_id);

    // Use a default value here if the field was not submitted.
    $new_field_value = 'default';

    if ( !empty($_POST['blog']['new_field']) )
        $new_field_value = $_POST['blog']['new_field'];

    // save option into the database
    update_option( 'new_field', $new_field_value);

    restore_current_blog();
}   
add_action( 'wpmu_new_blog', 'add_new_blog_field' );

En ce qui concerne l'affichage du champ sur la page, vous pouvez utiliser une approche Javascript. Vous ajoutez un fichier Javascript uniquement à la page "Ajouter un nouveau site" et onLoad de la page où vous insérez le champ à la position correcte sur la page. Vous devez ajouter un champ de saisie avec le nom 'blog [new_field]'. Nous créons le fichier Javascript suivant qui, une fois chargé, ajoute un nouveau champ à la page "Ajouter un nouveau site":

(function($) {
    $(document).ready(function() {
        $('<tr class="form-field form-required"></tr>').append(
            $('<th scope="row">New field</th>')
        ).append(
            $('<td></td>').append(
                $('<input class="regular-text" type="text" title="New Field" name="blog[new_field]">')
            ).append(
                $('<p>Explanation about your new field</p>')
            )
        ).insertAfter('#wpbody-content table tr:eq(2)');
    });
})(jQuery);

Il ne reste maintenant qu’à inclure ce fichier dans la page "Ajouter un nouveau site" en l’ajoutant à votre fichier de plug-in:

// Only add the script for the page site-new.php (the page hook).
add_action( "admin_print_scripts-site-new.php", 'my_admin_scripts' );    
function my_admin_scripts() {
    wp_register_script('yourScript', plugins_url('js/yourScript.js', __FILE__));
    wp_enqueue_script('yourScript');
}

Selon vos besoins, une autre suggestion pourrait être la suivante: Ajoutez un champ de saisie dans votre page de paramètres généraux à l'aide de add_settings_field, de sorte qu'un utilisateur puisse le modifier ultérieurement (et peut-être uniquement s'il s'agit du paramètre par défaut de ce champ). Une approche "vous ne pouvez pas changer ce champ plus tard".

1
jim.duck