web-dev-qa-db-fra.com

Mot de passe protégé page personnalisée

J'essaie de protéger ma page personnalisée avec un mot de passe de telle sorte qu'avant d'afficher le contenu, l'utilisateur doit entrer un mot de passe. Plus spécifiquement, dans mon code ci-dessous, tout ce qui se trouve dans le conteneur content-div-container doit être protégé par un mot de passe:

<?php
/*
Template Name: custom_page
*/
?>

<?php get_header(); ?>
<div id="content">

  <div id="main">


<ul class="post">
        <li><b>LATEST POSTS</li>
 <?php
    $args = array('category' => 5, 'post_type' =>  'post');
    $postslist = get_posts( $args );    
    foreach ($postslist as $post) :  setup_postdata($post); 
    ?> 
    <li id="post-<?php the_ID(); ?>">
      <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 
    <?php the_excerpt(); ?>
    </li>
    <?php endforeach; ?>

</ul> 

</div><!-- end content -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

J'ai essayé d'utiliser l'approche expliquée ici

Mot de passe protégeant une page

mais ne peux pas le faire fonctionner, car je ne sais pas comment envelopper mon code php dans la solution suggérée.

4
n3rd

Lorsque vous sélectionnez une option protégée par mot de passe dans le back-end de la page, cela fonctionne par défaut uniquement pour le contenu. c'est-à-dire the_content ()

Toutefois, si vous souhaitez protéger une page entière avec un mot de passe ou créer un modèle personnalisé, vous devez disposer de la structure suivante.

<?php
global $post;
get_header();

if ( ! post_password_required( $post ) ) {
      // Your custom code should here
}else{
    // we will show password form here
    echo get_the_password_form();
}

?>

Essayez d'utiliser cette structure

8
Chirag Swadia