web-dev-qa-db-fra.com

Quelle est la manière correcte de vérifier si WP_Filesystem peut écrire dans un répertoire sans demander le nom d'utilisateur/mot de passe?

J'essaie d'implémenter la mise en cache en utilisant le système de fichiers, donc je dois vérifier si je peux écrire dans un répertoire. J'ai lu l'article d'Otto , mais je n'ai pas compris comment mettre en œuvre un contrôle dans lequel l'utilisateur ne saisit aucun type de mot de passe. Donc, fondamentalement, je dois utiliser la méthode directe, quelle est la bonne façon de le faire?

3
Nicola Peluchetti

C'est ce que j'ai fini par utiliser

/**
 * check if the path is writable. To make the check .
 *
 * @param string $path
 * @return boolean
 */
public static function is_writable( $path ) {
    global $wp_filesystem;
    include_once ABSPATH . 'wp-admin/includes/file.php';
    // If for some reason the include doesn't work as expected just return false.
    if( ! function_exists( 'WP_Filesystem' ) ) {
        return false;
    }
    $writable = WP_Filesystem( false, $path );
    // We consider the directory as writable if it uses the direct transport,
    // otherwise credentials would be needed
    return $writable && $wp_filesystem->method === 'direct';
}
1
Nicola Peluchetti