Conditionner passage de page par un Captcha

Fermé
tridam23 Messages postés 99 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 11 juin 2021 - 16 nov. 2016 à 05:47
elgazar Messages postés 5841 Date d'inscription mercredi 30 octobre 2013 Statut Membre Dernière intervention 17 mars 2021 - 30 nov. 2016 à 20:57
Bonjour,

je suis debutant sous wordpress
1. est il possible de faire une page de login + creation de compte avant acces sur le site. style facebook???

2. est il possible de mettre un captcha avant chaque changement de page? Pour passer d'une page à l'autre j'aimerais que cela soit conditionné par la réponse à une question comme un captcha

Merci de votre aide
A voir également:

2 réponses

elgazar Messages postés 5841 Date d'inscription mercredi 30 octobre 2013 Statut Membre Dernière intervention 17 mars 2021 1 324
16 nov. 2016 à 10:05
bonjour
1. oui mais il faut un peu bidouiller le code du thème et utiliser des marqueurs conditionnels pour afficher une page de connexion quand les utilisateurs ne sont pas identifiés (et la page normale quand ils sont identifiés) par contre niveau référencement ce sera un plombage en règle

if ( is_user_logged_in()  ) {
le contenu de la div article
} else {
<?php wp_login_form(); ?> // le formulaire de connexion de wp
}

2. en théorie, il suffit de placer un captcha dans toutes les div articles puis quand la page s'ouvre, il verra la page de connexion si il n'est pas identifié ou le captcha ( puis le contenu) dans le cas contraire.





0
bonjour et merci. je vais essayer cela. pour le point 1
ce bout de code je le met ou?avec ce code la page de connexion sera la première page (index) du site ?

pour le point 2, je vas tente
0
elgazar Messages postés 5841 Date d'inscription mercredi 30 octobre 2013 Statut Membre Dernière intervention 17 mars 2021 1 324 > tridam23
19 nov. 2016 à 06:20
tu dois le mettre sur les pages index.php, categorie.php, archive.php,single.php page.php bref partout où ton contenu est censé d'être lu.
tu peux en outre cibler uniquement certaines, pages, certaines catégories ou certains articles selon leur id, leur motclé, la date, l'auteur, etc

pour comprendre les marqueurs conditionnels, regarde ici
0
tridam23 Messages postés 99 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 11 juin 2021
22 nov. 2016 à 05:41
merci, je vais tenter
et comment faire pour que la page de login soit en page d'acceuil
genre tu te connecter avant d'avoir accès au site web, un peu comme facebook
que faire pour mettre la login de wp en page d'acceuil
0
elgazar Messages postés 5841 Date d'inscription mercredi 30 octobre 2013 Statut Membre Dernière intervention 17 mars 2021 1 324 > tridam23 Messages postés 99 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 11 juin 2021
Modifié par elgazar le 22/11/2016 à 08:57
Il faut créer un modèle de page personnalisée

en gros, tu copie/colle le code de page.php dans un nouveau fichier que tu appelles page-accueil.php que tu mettras au même niveau dans le dossier

avant le code de page-accueil.php , tu insères ces lignes
<?php
/*
Template Name: page-accueil
  • / ?>


ensuite tu enlèves ce que tu veux dans le code, si tu veux n'avoir qu'un formulaire de connexion, tu dois garder le strict minimum ce qui se résume généralement à cela

ici le code de template name

<?php get_header() ?>

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

</div><!-- #content -->
</div><!-- #container -->


<?php get_footer() ?>


j'ai gardé le header et le footer mais ce n'est pas obligatoire selon le thème que tu utilises et j'ai simplement rajouté le formulaire de connexion à la place du contenu.


Une fois ton modèle de page défini, il suffit de créer une page vide (mets seulement le titre accueil) puis de choisir dans les attributs de pages dans la colonne de droite de la page d'édition le modèle page-accueil et enfin d'aller dans le menu réglages=>lecture et de mettre ta page comme page d'accueil

ps: pour raison que j'ignore le forum ne prends pas le second astérisque dans le code de template name, pense à bien l'entourer avec /* et */
0
tridam23 Messages postés 99 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 11 juin 2021 > elgazar Messages postés 5841 Date d'inscription mercredi 30 octobre 2013 Statut Membre Dernière intervention 17 mars 2021
22 nov. 2016 à 10:31
apres avoir fais cela, la page appait toute blanche sur wp??

<?php
/*
Template Name: page-accueil

    */  ?>

<?php get_header(); ?>

		<!-- block-wrapper-section
			================================================== -->
		<section class="block-wrapper">
			<div class="container">
				<div class="row">
					<div class="col-sm-8">

						<!-- block content -->
						<div class="block-content">
							<div class="title-section">
							  <h1><span><?php if(function_exists('is_bbpress')){ if(is_bbpress()){ echo "Forum"; }else{ single_post_title(); } }else{ single_post_title(); } ?></span></h1>
							</div>
							<div class="single-post-box">
							<?php while (have_posts()) : the_post(); ?>
								<?php the_content(); ?>
								
								<?php if('open' == $post->comment_status){ ?>

									<?php comments_template(); ?>

								<?php } ?>

							<?php endwhile; ?>
							</div>
							
						</div>
						<!-- End block content -->

					</div>

					<div class="col-sm-4">

						<?php get_sidebar(); ?>

					</div>

				</div>

			</div>
		</section>
		<!-- End block-wrapper-section -->

<?php get_footer(); ?>

<?php get_header() ?>

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

  </div><!-- #content -->
 </div><!-- #container -->


<?php get_footer() ?>


Qu'ai je mal fait???
0
elgazar Messages postés 5841 Date d'inscription mercredi 30 octobre 2013 Statut Membre Dernière intervention 17 mars 2021 1 324
30 nov. 2016 à 17:17
ah ok je comprends mieux pourquoi tu n'y arrivais pas, ton index utilise plusieurs fichiers pour s'afficher donc c'est difficile de mettre le code sans voir la totalité, cela dit tu peux essayer de mettre le code dans wp-blog-header.php en espérant qu'il ne soit pas découper en plusieurs parties

tu utilise quel thème ?
0
tridam23 Messages postés 99 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 11 juin 2021
30 nov. 2016 à 17:33
theme Themify Peak

mon wp blog header

<?php
/**
 * Loads the WordPress environment and template.
 *
 * @package WordPress
 */

if ( !isset($wp_did_header) ) {

	$wp_did_header = true;

	// Load the WordPress library.
	require_once( dirname(__FILE__) . '/wp-load.php' );

	// Set up the WordPress query.
	wp();

	// Load the theme template.
	require_once( ABSPATH . WPINC . '/template-loader.php' );

}
0
elgazar Messages postés 5841 Date d'inscription mercredi 30 octobre 2013 Statut Membre Dernière intervention 17 mars 2021 1 324 > tridam23 Messages postés 99 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 11 juin 2021
30 nov. 2016 à 20:57
voila pourquoi je ne fais généralement pas de support pour les thèmes payants car leurs codes sont complexifiées pour éviter qu'on leur pique mais du coup, impossible de faire une modification simplement.

je te dirais bien de regarder dans template-loader pour voir si tu vois
<?php if ( have_posts() ) : ?>
dans une div puis de placer le code autour comme ci


<?php
/**
 * The main template file
 *
 * This is the most generic template file in a WordPress theme
 * and one of the two required files for a theme (the other being style.css).
 * It is used to display a page when nothing more specific matches a query.
 * E.g., it puts together the home page when no home.php file exists.
 *
 * @link http://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Sixteen
 * @since Twenty Sixteen 1.0
 */

get_header(); ?>
//
début de la condition
<?php if ( is_user_logged_in() ) { ?>



//début de la div article affichée aux inscrits, partie originale du code
	<div id="primary" class="content-area">
		<main id="main" class="site-main" role="main">

		<?php if ( have_posts() ) : ?>

			<?php if ( is_home() && ! is_front_page() ) : ?>
				<header>
					<h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
				</header>
			<?php endif; ?>

			<?php
			// Start the loop.
			while ( have_posts() ) : the_post();

				/*
				 * Include the Post-Format-specific template for the content.
				 * If you want to override this in a child theme, then include a file
				 * called content-___.php (where ___ is the Post Format name) and that will be used instead.
				 */
				get_template_part( 'template-parts/content', get_post_format() );

			// End the loop.
			endwhile;

			// Previous/next page navigation.
			the_posts_pagination( array(
				'prev_text'          => __( 'Previous page', 'twentysixteen' ),
				'next_text'          => __( 'Next page', 'twentysixteen' ),
				'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>',
			) );

		// If no content, include the "No posts found" template.
		else :
			get_template_part( 'template-parts/content', 'none' );

		endif;
		?>

		</main><!-- .site-main -->
	</div><!-- .content-area --> //fin de la div affichés aux inscrits
	


//début de la condition pour les utilisateurs non loggé (partie du code à ajouter)
<?php } else { 

  $args = array(
        'echo'           => true,
        'redirect'       => 'http://localhost/sitetest/',
        'label_log_in'   => __( 'Log in' ),
        'form_id'        => 'login',
        'label_username' => __( 'Username' ),
        'label_password' => __( 'Password' ),
        'label_remember' => __( 'Remember Me' ),
        'id_username'    => 'user_login',
        'id_password'    => 'user_pass',
        'id_submit'      => 'wp-submit',
        'remember'       => true,
        'value_username' => NULL,
        'value_remember' => true
    ); ?>
	<div id="container" class="">
		<div id="content" >
   <?php  wp_login_form($args); ?>
</div></div>
	<a href="<?php bloginfo('url');?>/wp-login.php?action=register">Inscription</a>
	<a href="<?php bloginfo('url');?>/wp-login.php?action=logout">Desinscription</a>
<?php  } ?> // fin de la condition



// affichage de la sidebar et du footer dans les deux cas
<?php get_sidebar(); ?>
<?php get_footer(); ?>
0