web-dev-qa-db-fra.com

Thème WordPress personnalisé - La recherche ne fonctionne pas sur les publications

J'ai un blog WordPress qui utilise un thème tiers appelé Alphabet (il n'est plus disponible et semble avoir été supprimé par le créateur: https://themeforest.net/item/alphabet-a-responsive-wordpress- blog-theme/14258651 )

Il n'y a pas de pages sur ce site - juste des articles de blog. La barre de recherche ne fonctionne que si vous l'utilisez sur une page de publication réelle. Si vous l'utilisez là-bas, vous obtenez une erreur 404 quelle que soit votre requête de recherche. Quelque chose semble incorrect avec la façon dont la requête de résultat de la recherche est ajoutée à l'URL.

Par exemple, si vous utilisez la recherche sur la page d'accueil, l'URL est configurée comme suit: http://[my-site.com]/?s=test

Si vous accédez à un message et utilisez la recherche, l'URL est configurée comme suit: https://[my-site.com]/[sample-post-title]/?s=Culturalism

Si je modifie l'URL pour exclure le titre de l'article, la requête de recherche fonctionne. Je ne serais pas surpris si quelque chose ne va pas dans la façon dont ce thème tiers installe la recherche car il n'est pas configuré correctement par les normes WordPress.

Voici le fichier search.php:

<!-- Start main_content -->
<div class="main_content container">
    <!-- Start posts_sidebar -->
    <div class="posts_sidebar clearfix <?php echo esc_attr($sidebar_position); ?>">

        <!-- Start Sidebar -->
        <?php if (alphabet_get_option('blog_archive_sidebar') == 'Left') {
            get_sidebar();
        } ?>
        <!-- End Sidebar -->

        <!--Start Posts Areaa -->
        <div class="archive_areaa <?php echo esc_attr($fullwidth_position); ?>">
            <div class="row">
                <!-- post_header -->
                <div class="post_header">
                    <h1><?php the_search_query(); ?></h1>
                    <span class="title_divider"></span>
                </div>
                <!-- // post_header -->

                <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
                    <!-- Start as_post -->
                    <article class="as_post">
                        <div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
                            <?php $format = get_post_format();
                            if (false === $format) {
                                $format = 'standard';
                            } ?>
                            <?php get_template_part('includes/content', $format); ?>
                        </div>
                    </article>
                    <!-- End as_post -->
                <?php endwhile; ?>

                    <!-- Start pagination_post -->
                    <nav class="pagination_post">
                        <ul class="pager">
                            <li><?php previous_posts_link(); ?></li>
                            <li><?php next_posts_link(); ?></li>
                        </ul>
                    </nav>
                <?php else : ?>
                    <p><?php esc_html_e('Sorry, no posts matched your criteria.', 'alphabet'); ?></p>
                <?php endif; ?>
                <!-- End pagination_post -->
            </div>
        </div>
        <!--End Posts Areaa -->

        <!-- Start Sidebar -->
        <?php if (alphabet_get_option('blog_archive_sidebar') == 'Right') {
            get_sidebar();
        } ?>
        <!-- End Sidebar -->

    </div>
    <!-- posts_sidebar -->
</div>
<!-- main_content -->

Et voici le code du formulaire de recherche (situé dans header1.php - ce thème contient plusieurs fichiers header.php, mais il s'agit de celui que le blog utilise):

 <!-- Start top_search_ico -->
   <div id="top_search_ico">
      <!-- Start top_search -->
      <div class="top_search">
        <form method="get"><input type="text" placeholder="<?php esc_html_e( 'Search and hit enter...', 'alphabet' );?>" name="s" id="s"></form>
        <i class="fa fa-search search-desktop"></i>
      </div>
      <!-- End top_search -->
      <!-- Start top_search_toggle -->
      <div id="top_search_toggle">
        <div id="search_toggle_top">
        <form method="get"><input type="text" placeholder="<?php esc_html_e( 'Search and hit enter...', 'alphabet' );?>" name="s" id="s"></form>
        </div>
        <i class="fa fa-search search-desktop"></i>
      </div>
      <!-- End top_search_toggle -->
    </div>

Au cas où cela pourrait être utile, j'ai les permaliens formatés sur le blog en tant que tels: https://[my-site.com]/sample-post/

1
gallifrey1212

Votre formulaire n'a pas de action, il est donc soumis à l'adresse URL actuelle. Vous pouvez le pointer vers home_url() pour qu'il y soit soumis quelle que soit la page à partir de laquelle vous effectuez une recherche.

<form method="get" action="<?php echo esc_url( home_url() ); ?>">
1
Milo