Come bypassare la protezione password di una pagina WordPress tramite URL
Ho una pagina protetta da password che vorrei rendere accessibile con un link personalizzato contenente la password come variabile GET nell'URL www.dominio.tld/mia-pagina?code=miapasswordpersonalizzata
Ho trovato questo ma non funziona Bypassare i post protetti da password tramite variabile GET
Potresti aiutarmi a bypassare il form della password?
Grazie

add_filter( 'post_password_required', function( $returned, $post )
{
// Se la pagina è protetta da password e il parametro GET 'pwd' corrisponde alla password del post
if( $returned && ( $_GET['pwd'] == $post->post_password ) )
$returned = false; // Disabilita la richiesta di password
return $returned;
}, 10, 2 );
**Link per bypassare la protezione di pagina con password. Da aggiungere nel file functions.php del tema. Il link dovrebbe essere simile a: https://www.example.com/post/?pwd=PASSWORD

Puoi utilizzare lo stesso principio dell'esempio fornito, tuttavia sostituisci $_GET
con $_POST
. Quindi avresti qualcosa di simile verso la fine:
// Il tuo controllo personalizzato per il contenuto di '$_POST'
// …controlla anche se effettivamente esiste una password
// …e se l'utente è un visitatore ripetuto, non reimpostare nuovamente il Cookie
if (
isset( $_POST['circumvent'] )
and 'disable-pass' === $_POST['circumvent']
and isset( $post->post_password )
and ! isset( 'wp-postpass_'.COOKIEHASH )
) {
// Infine utilizziamo la password in testo semplice per impostare il Cookie
// come se l'utente l'avesse inserita nel modulo della password
setcookie(
'wp-postpass_'.COOKIEHASH,
$hasher->HashPassword( wp_unslash( esc_attr( $post->post_password ) ) ),
$expire,
COOKIEPATH
);
}
// Ora visualizza il contenuto:
the_content();

Ciao, grazie per la risposta, ho questo errore: PHP Fatal error: Call to a member function HashPassword() on a non-object in /home/test-user/public_html/wp-content/themes/default/template-landing-private.php on line 81

Potresti aver bisogno di aggiungere global $hasher;
all'inizio. Altrimenti potresti postare l'intero file?

/ Template Name: TEST /
if ( isset( $GET['code'] ) and 'mycustompassword' === $_GET['code'] and isset( $post->post_password ) and null !== 'wp-postpass'.COOKIEHASH //!isset( 'wp-postpass_'.COOKIEHASH ) ) { setcookie( 'wp-postpass_'.COOKIEHASH, $hasher->HashPassword( wp_unslash( esc_attr( $post->post_password ) ) ), $expire, COOKIEPATH ); }
get_header(); while ( have_posts() ) : the_post(); the_content(); endwhile; get_footer();

Per favore pubblica il tuo codice tra backtick (`) in modo che sia formattato correttamente

invece di usare the_content(), utilizza echo apply_filters( 'the_content', $post->post_content ); potrei sbagliarmi ma credo che questo bypassi completamente il modulo della password, poi puoi implementare la tua logica semplice per decidere se mostrare o meno il contenuto. In ogni caso però ti consiglio vivamente di non farlo se il contenuto è costituito da dati molto sensibili. ad esempio, spero che non si tratti di informazioni personali di qualcuno. Inoltre dovrai assicurarti che il post abbia una password in modo che non compaia nei risultati di ricerca, sitemap, feed o endpoint API JSON di WordPress.
