web-dev-qa-db-fra.com

Ban SiteNames Multisite

Existe-t-il un moyen d'interdire la création de noms de sites? Par exemple, nous avons des sous-dossiers tels que domain.com/site. Existe-t-il un moyen d’interdire l’enregistrement de mauvais mots? Donc domain.com/bad serait bloqué?

Comment puis-je faire ceci?

4
brandi

Vous pouvez filtrer domain_exists, une vérification qui s'exécute avant qu'un site ne soit enregistré. Si vous renvoyez un entier positif, WordPress ne créera pas ce site. Malgré son nom, ce filtre vous permet également de vérifier le chemin.

Exemple de code, non testé:

add_filter( 'domain_exists', function( $result, $domain, $path ) {

    // Already taken, no need for further checks.
    if ( $result ) {
        return $result;
    }

    $blacklist = [
        'domains' => [
            'assets.example.com',
            'wordpress.example.com',
        ],
        'paths' => [
            'wp-admin',
            'wp-includes',
            'wp-content',
        ],
    ];

    if ( in_array( $domain, $blacklist['domains'] ) ) {
        return 1;
    }

    $path = trim( $path, '/' );

    if ( empty ( $path) ) {
        return $result;
    }

    if ( in_array( $path, $blacklist['paths'] ) ) {
        return 1;
    }

    return $result;
}, 10, 3 );
5
fuxia