自定义WordPress主题-搜索不适用于帖子

时间:2017-05-25 作者:gallifrey1212

我有一个WordPress博客,它使用了一个名为Alphabet的第三方主题(不再可用,似乎已被创建者删除:https://themeforest.net/item/alphabet-a-responsive-wordpress-blog-theme/14258651)

这个网站上没有网页,只有博客帖子。除非您在实际的帖子页面上使用搜索栏,否则搜索栏会正常工作。如果您在那里使用它,无论您的搜索查询如何,都会出现404错误。搜索结果查询附加到url的方式似乎不正确。

例如,如果使用主页上的搜索,则url设置如下:http://[my-site.com]/?s=test

如果您转到帖子并在那里使用搜索,url的设置如下:https://[my-site.com]/[sample-post-title]/?s=Culturalism

如果我更改url以排除帖子标题,那么搜索查询就会工作。如果这个第三方主题的搜索设置有问题,我不会感到惊讶,因为它没有按照WordPress标准正确设置。

这是搜索结果。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 -->
下面是搜索表单的代码(位于header1.php中--此主题有多个header.php文件,但这是博客使用的文件):

 <!-- 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>
如果可能有用,我在博客上设置了永久链接的格式:https://[my-site.com]/sample-post/

1 个回复
最合适的回答,由SO网友:Milo 整理而成

您的表单没有action, 因此,它提交到当前URL的任何位置。你可以指向home_url() 因此,无论您从哪个页面搜索,它都会提交到那里。

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

结束

相关推荐

Search Results Customization

无论如何,我可以自定义我的搜索结果吗?我的意思是,举个例子,我有一个财务网页,如果有人在搜索“aapl”,我想显示所有包含“aapl”和“apple”的结果。我该怎么做?提前感谢