【问题标题】:WordPress Search ProblemsWordPress搜索问题
【发布时间】:2012-11-29 02:59:40
【问题描述】:

我已经研究过这个问题,但似乎仍然无法弄清楚为什么我的搜索功能不适用于我正在研究的主题。下面是我的 search.php 和 searchform.php 文件的代码。搜索文件几乎没有从样板的空白 WordPress 主题中修改。当我搜索任何内容时,它会返回 404 错误。我研究了搜索返回的 404,但仍然找不到解决方案。 Blow 是我的代码,任何帮助将不胜感激。

searchform.php----------------------------------

<form action="<?php bloginfo('siteurl'); ?>" id="searchform" method="get">
        <label for="search"><object data='<?php bloginfo('template_directory');?    >/images/input-search.svg'>
        <img src='<?php bloginfo('template_directory');?>/images/input-search.png'>
        </object></label>
        <input type="search" name="search" />
</form>

search.php---------------------------------------

<?php get_header(); ?>

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

    <h2>Search Results</h2>

    <?php include (TEMPLATEPATH . '/inc/nav.php' ); ?>

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

        <div <?php post_class() ?> id="post-<?php the_ID(); ?>">

            <h2><?php the_title(); ?></h2>

            <?php include (TEMPLATEPATH . '/inc/meta.php' ); ?>

            <div class="entry">

                <?php the_excerpt(); ?>

            </div>

        </div>

    <?php endwhile; ?>

    <?php include (TEMPLATEPATH . '/inc/nav.php' ); ?>

<?php else : ?>

    <h2>No posts found.</h2>

<?php endif; ?>

【问题讨论】:

    标签: wordpress search http-status-code-404


    【解决方案1】:

    您需要确保在您的 functions.php 文件中启用了您的搜索表单,如下所示:

     // ENABLES SEARCH FORM STUFF
     function my_search_form( $form ) {
    
    $form = '<form role="search" method="get" id="searchform" action="' . home_url( '/' ) . '" >
    <div><label class="screen-reader-text" for="s">' . __('Search for:') . '</label>
    <input type="text" value="' . get_search_query() . '" name="s" id="s" />
    <input type="submit" id="searchsubmit" value="'. esc_attr__('Search') .'" />
    </div>
    </form>';
    
    return $form;
    

    }

     // ENABLES SEARCH FORM
     add_filter( 'get_search_form', 'my_search_form' );
    

    这是我在主题中使用的代码。然后这会在我的搜索表单中调用:

     <?php get_search_form(); ?>
    

    这是我的 searchform.php

        <form method="get" id="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>">
         <label for="s" class="assistive-text"><?php _e( 'Search' ); ?></label>
         <input type="text" class="field" name="s" id="s" placeholder="<?php esc_attr_e( 'Search' ); ?>" />
         <input type="submit" class="submit" name="submit" id="searchsubmit" value="<?php esc_attr_e( 'Search' ); ?>" />
        </form>
    

    【讨论】:

    • 好吧,我知道为什么它会返回 404 - 我实际上有我的 包裹在一个额外的表单标签中,所以我的 HTML 和我的 searchform.php 文件中有一个表单标签。但是,搜索结果现在查询 ../?search=xxx 但它返回数据库中的每个帖子。有什么猜测吗?
    • 尝试从你的 searchform.php 中删除 action="" 并把 action="$_SERVER['PHP_SELF']" 代替...让我知道这是否有效
    • 这似乎没有做到。这又回到了 404。
    • 嗯...您的 searchform.php 与我的不同,这是我的:我将编辑我的答案...
    猜你喜欢
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多