web-dev-qa-db-fra.com

Page de résultat de recherche personnalisée affichant un seul résultat.

J'essaie de créer une page de résultats de recherche personnalisée. Le problème que je rencontre est que lorsque je saisis un terme de recherche; dites 'gaming', cela ne donnera qu'un résultat, le dernier résultat. J'ai la configuration de mon blog pour afficher un seul article à la fois. Cependant, j'ai trouvé un moyen de contourner la page de résultats de la recherche en me connectant à wp-admin -> paramètres -> lecture -> et en modifiant la page du blog pour afficher un article, par exemple 10.

Ensuite, lorsque j'essaie de rechercher un jeu, il retourne plus d'un résultat (il m'en donne 10). Cependant, je ne veux pas cela. Je souhaite que la page de blog de mes sites ne montre qu'un seul article et que la page de résultats en affiche plusieurs. Comment puis-je résoudre ce problème?

Voici à quoi ressemble mon search.php. J'ai créé un searchpage.php et l'inclue en utilisant PHP pour récupérer le search.php

Merci! :)

    <!-- SEARCH PAGE -->
    <div id="search-results" class="wrapper" role="search">

<h2> Search Results</h2>

<!-- COUNT RESULTS -->
<div class="results">
    <?php
    /* Search Count */
    $allsearch = &new WP_Query("s=$s&showposts=-1"); 
    $key = wp_specialchars($s, 1);
    $count = $allsearch->post_count; 
    _e('');
    _e('"<span class="search-terms">');
    echo $key;
    _e('</span>"'); 
    _e(' &mdash; found ');
    echo $count . ' '; 
    _e('articles');
    wp_reset_query(); ?>

</div>
<!-- / COUNT RESULTS -->

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

<!-- LIST RESULTS -->
<section>   
    <h3>
        <li>
        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to 
        <?php the_title_attribute(); ?>"><?php the_title(); ?></a> - 
        <span class="search-time"><?php the_time('F, j, Y') ?></span>
        </li>
    </h3>
</section>
<!-- / LIST RESULTS -->

<?php endwhile; else: ?>

<!-- 404 SEARCH -->
<div class="404-search">
<?php _e("Oops... We couldn't find what you were searching for. Please try again"); ?>
</div>
<!-- / 404 SEARCH -->

<?php endif; ?>

     </div>

     <!-- / SEARCH PAGE -->
1
Monstr92

Changement

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

à

<?php if ($allsearch->have_posts()) : ?>
<?php while ($allsearch->have_posts()) : $allsearch->the_post(); ?>

sinon, vous n'utilisez pas votre requête personnalisée.

Voir Utilisation de WP_Query .

Appelez également wp_reset_query(); après la boucle.

Voir wp_reset_query Description .

En fait, vous n'avez pas besoin de wp_reset_query(); car vous utilisez un objet WP_Query personnalisé et vous n'avez pas besoin de réinitialiser global$wp_query.

2
Max Yudin