Página de proteção de senha com várias senhas

Oi meu cliente precisa adicionar a página de proteção de senha no wordpress. Então eu faço visibilidade da página como proteção de senha e está funcionando corretamente. Mas o cliente está dando uma série de senha. Ele recebe senha 2314 a 2335. Assim, a senha é qualquer número entre 2314 a 2335. Agora, o que eu faço? Existe algum método ou chamada para resolver isso? Algum gancho está lá?

Solutions Collecting From Web of "Página de proteção de senha com várias senhas"

Aqui está apenas um teste de demonstração para diversão, apenas para ver se isso pode ser possível:

Demo

Primeiro, definimos a senha da postagem, da maneira usual:

senha

Em seguida, criamos um campo personalizado chamado wpse_extra_passwords que leva senhas separadas por vírgulas:

senhas extras

Estas são as senhas extras para essa publicação.

Vamos definir a seguinte function auxiliar, com base na function principal post_password_required() :

 /** * Helper function, check password + extra passwords */ function wpse_post_password_required( $post = null ) { $post = get_post($post); if ( empty( $post->post_password ) ) return false; if ( ! isset( $_COOKIE['wp-postpass_' . COOKIEHASH] ) ) return true; require_once ABSPATH . WPINC . '/class-phpass.php'; $hasher = new PasswordHash( 8, true ); $hash = wp_unslash( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ); if ( 0 !== strpos( $hash, '$P$B' ) ) return true; // Check the current password if( $hasher->CheckPassword( $post->post_password, $hash ) ) return false; // Fetch extra passwords if( ! $extra_passwords = get_post_meta( $post->ID, 'wpse_extra_passwords', true ) ) return true; // Check these extra passwords $extra = explode( ',', $extra_passwords ); foreach( (array) $extra as $password ) { $password = trim( $password ); if( ! empty( $password ) && $hasher->CheckPassword( $password, $hash ) ) return false; } return true; } 

Em seguida, entramos no filtro the_password_form e direcionamos o object de postagem única no loop principal:

 /** * Support extra post passwords for single posts in the main loop */ add_filter( 'the_password_form', function( $output ) { if( ! is_single() || ! in_the_loop() || did_action( 'the_password_form' ) ) return $output; $post = get_post(); // Display password form if none of the passwords matches: if( wpse_post_password_required( $post ) ) return $output; // Get the current password $password = $post->post_password; // Temporary remove it $post->post_password = ''; // Fetch the content $content = get_the_content(); // Set the password back $post->post_password = $password; return $content; } ); 

Espero que você possa testá-lo e brincar com ele ainda mais.

Notas

Você mencionou senhas como 2314. É muito fácil escrever um programa que possa adivinhar senhas simples assim. Então usei senhas um pouco mais fortes nesta demo.