Problème custom search qui ne fonctionne plus

  • WordPress :5.2
  • Statut : non résolu
Affichage de 1 message (sur 1 au total)
  • Auteur
    Messages
  • #2284280
    boule14
    Participant
    Initié WordPress
    27 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL : 7.3
    • Thème utilisé : thème enfant de twentyseventeen
    • Extensions en place :
    • Nom de l’hébergeur : 1&1
    • Adresse du site :

    Problème(s) rencontré(s) :

    Bonjour à tous,

    ça fait un moment que je teste et je ne comprends pas pourquoi, mais lorsque je passe de 5.1 à 5.2, mon système de recherche personnalisée ne fonctionne plus.

    Il repose sur un catégorie + taxonomie + meta pour un custom post type.

    Par élimination, ce sont les args de la taxonomie “ville” qui posent problèmes mais après avoir tenté plusieurs choses, rien ne fonctionne et ça plante complètement la recherche. Si j’élimine le code qui correspond à la ville, je retrouve ma recherche, sinon tout est bloqué et rien ne s’affiche.

    Merci pour votre aide.

    Voici le code :

    functions.php

    function montheme_add_query_vars( $vars ){
    	$vars[] = "activite";
    	$vars[] = "ville";
    	$vars[] = "pax-mini";
    	return $vars;
    }
    add_filter( 'query_vars', 'montheme_add_query_vars' );
    
    
    function montheme_pre_get_posts( $q ) {
    		
    	// recherche nombre de personnes minimum
    
    	$meta_queries = $q->get( 'meta_query', array() );
    
    	// Si un nombre minimum est précisé
    	if ( $q->get( 'pax-mini' ) ) {
    		$meta_queries[] = array(
    		'key'     => 'nb_pax',
    		'value'   => $q->get( 'pax-mini' ),
    		'compare' => '<=',
    		'type'    => 'NUMERIC',
    	    );
    	} 
    
    		$q->set( 'meta_query', $meta_queries );
    
    	return $q;
    
    }
    
    add_filter( 'pre_get_posts', 'montheme_pre_get_posts' );
    functions.php

    searchform.php

    <?php
    /**
     * Template for displaying search forms in Twenty Seventeen
     *
     * @package WordPress
     * @subpackage Twenty_Seventeen
     * @since 1.0
     * @version 1.0
     */
    
    ?>
    
    <?php $unique_id = esc_attr( uniqid( 'search-form-' ) ); ?>
    
    
    <form role="search" method="get" action="<?php echo esc_url( home_url( '/' ) ); ?>">
    	
    	<p class="hide">
    		<label for="s"></label>
    		<input type="hidden" name="s" value="<?php the_search_query(); ?>" id="s">
    		<input type="hidden" name="cat" value="16,17" /> <!--forcer à rechercher entre les catégories 17 & 18 -->
    	</p>
    	<div class="inline">
    		<label for="activite">Animations</label>
    		<div class="styled">
    		<select name="cat">
    			<option value="16,17">Tous types d'activités</option>
    			<option disabled>-- Par type d’animations --</option>
    			<option value="16">test1</option>
    			<option value="17">test2</option>
    			<option disabled>-- Par thème --</option>
    			<option value="129">test3</option>
    			<option value="19">test4</option>
    		</select>
    		</div>
    	</div>
    	<div class="inline">
    		<label for="ville">Ville</label>
    		<div class="styled">
    		<?php 
    		
    			$args = array(
        		'tax_query' => array(
    				'show_option_all'   => __( 'Toutes les villes' ), 
    				'orderby'           => 'name', 
    				'order'             => 'ASC',
    				'show_count'        => 1,
    				'hide_empty'        => 1, 
    				'echo'              => 0,
    				'name'              => 'ville', 
    				'id'                => 'ville',
    				'hierarchical'      => true,
    				'depth'             => 1,
    				'taxonomy'          => 'ville',
    				'hide_if_empty'     => true, 
    				'value_field'       => 'slug',
    			));
    
    		// Y-a-t'il une ville actuellement sélectionnée ?
    		if ( get_query_var( 'ville' ) 
    	    && ( $t = term_exists( get_query_var( 'ville' ), 'ville' ) ) ) {
    			$args['selected'] = get_query_var( 'ville' ) ;
    		}
    
    		$list = wp_dropdown_categories( $args );
    
    		// Afficher la liste s'il existe des villes associées à des contenus
    		if ( $list ) {
    			echo $list;
    		} 
    
    		?>
    		</div>
    	</div>
    	<div class="inline search-pax">
    		<label for="pax-mini">Nombre de participants</label>
    		<input type="number" name="pax-mini" min="0" value="<?php 
    		if ( isset( $_GET['pax-mini'] ) && $_GET['pax-mini'] ) {
    			echo intval( $_GET['pax-mini'] );
    		} ?>" id="pax-mini">
    	</div>
    	<button type="submit">Rechercher</button>
    </form>
    searchform.php

    • Ce sujet a été modifié le il y a 6 jours et 10 heures par  boule14. Raison: orthographe
Affichage de 1 message (sur 1 au total)
  • Vous devez être connecté pour répondre à ce sujet.