【问题标题】:Search bar on top navigation in WPWP顶部导航的搜索栏
【发布时间】:2017-10-26 22:31:32
【问题描述】:

我的网站标题上有一个搜索表单,它似乎在主页上运行良好,但在其他页面上却不是。

您能否建议需要做什么才能在任何其他页面上进行搜索并重定向到带有搜索结果的主页。就像主页已经做的那样。

这里有文件以备不时之需。

header.php

              <form class="input-search" id="search-form-folio">
              <input type="text" placeholder="Search" id="folio_filter_search">
              <i class="fa fa-search"></i>
              <input type="submit" value="">
          </form>

searchform.php

<form method="get" action="<?php print esc_url(home_url('')); ?>" class="input-search">
<input type="text" required placeholder="<?php esc_html_e('Search', 'nrgnetwork'); ?>" name="s">
<i class="fa fa-search"></i>
<input type="submit" value="">

搜索.php

<div class="blog-wrapper">
                <?php
                    if ( have_posts() ):
                        // Start the loop.
                        while ( have_posts() ) : the_post();
                            get_template_part( 'content', get_post_format() );
                        endwhile;

                    // If no content, include the "No posts found" template.
                    else :
                        get_template_part( 'content', 'none' );
                    endif;
                    //pagination
                    NRGnetwork_TPL::pagination();
                ?>
            </div>

【问题讨论】:

  • 能否提供网站链接?
  • @PrakashRao 这是umzzr.com 抱歉不是英文的。请在主页上搜索(工作)。并尝试其他页面(单击任何 gif)并在顶部搜索(它不起作用。想要重定向到主页并在页面上显示结果。

标签: php wordpress search


【解决方案1】:

这里是 WordPress 搜索页面上所有文档的页面链接:https://codex.wordpress.org/Creating_a_Search_Page

你需要知道的事情

不同的 WordPress 主题具有不同的模板文件。有些包括一个 search.php 模板文件。这不是一个搜索页面,它只是一个显示搜索结果的模板。还有一个名为 searchform.php 的模板文件。这是一个模板文件,通常包含在许多主题的侧边栏中,并生成搜索框表单。如果您的主题中没有,您可以轻松地从默认主题中复制它。

要创建您自己的自定义搜索页面,您需要创建一个页面模板以包含您的搜索表单以及您希望用户在搜索您的网站之前看到的信息。

检查您的 WordPress 主题,看看它是否包含 page.php 模板文件。默认 WordPress 主题确实包含此模板,但很多都没有。如果是这样,请按照这些说明进行操作。如果没有,我们有您创建自己所需的信息。

创建搜索页面模板

  1. 使用文本编辑器打开 page.php 并另存为 searchpage.php。如果您没有 page.php,您可以根据您的主题的 index.php 模板文件创建一个。 注意:文件名search.php 保留为特殊模板名,避免使用;建议的 searchpage.php 只是让它在文件列表中很容易识别。

  2. 保存后,编辑文件:

    • 删除循环(即基本上内容 div 中的所有内容),保持 div 标签完好无损。

    • 添加标题,例如“搜索帖子”或类似内容。您可以使用 CSS 样式表中的现有类,也可以创建一个新类。

    • 将以下内容复制到内容 div 或包含您的页面内容的任何其他 div 中:

在您的 searchpage.php 顶部,在其他任何内容之前,添加此内容以为您的搜索页面提供一个 WordPress 将在管理屏幕中识别的标题:

<?php
/*
Template Name: Search Page
*/
?>
    1. 保存文件。
    1. 将文件上传到您的主题目录(如果您对 style.css 样式表文件进行了更改,也请上传该文件)。

如果你在二十七岁时从page.php创建searchpage.php,会是这样的:

<?php
/*
Template Name: Search Page
*/
?>
<?php
get_header(); ?>

<div class="wrap">
    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">

            <?php get_search_form(); ?>

        </main><!-- #main -->
    </div><!-- #primary -->
</div><!-- .wrap -->

<?php get_footer();

创建搜索页面

基于搜索页面模板,我们将创建搜索页面。

在管理屏幕中,转到页面 > 添加新的。 在标题字段中输入搜索。 不要在内容区写任何东西。 仍在同一页面上时,在右侧菜单中查找页面属性。 选择模板中的下拉菜单,然后选择搜索页面。 点击发布按钮。

链接到您的搜索页面

您现在可以通过多种方式链接到您的自定义搜索页面。

使用页面 ID

无论您是否使用永久链接,您都可以使用页面的页面 ID 号链接到您的新搜索页面。在您的任何帖子、页面或模板中插入下一行

<a href="index.php?page_id=17" title="Search Page">Search Page</a>

或者你可以在模板中插入下一行

<a href="<?php echo home_url(); ?>/?page_id=17">Search Page</a>

使用 Page Slug

Page slug 在编辑页面屏幕中设置。如果您使用永久链接,它是页面的名称。您可以手动更改此设置。 Page slug 链接的一个示例是:

<a href="/wordpress/search-page/" title="Search Page">Search Page</a>

当 slug 是“搜索页面”时,适用于任何帖子、页面或模板。或者你可以在模板中插入下一行

<a href="<?php echo home_url(); ?>/wordpress/search-page/" title="Search Page">Search Page</a>

使用 wp_list_pages()

如果您使用 wp_list_pages() 模板标签,页面名称将自动在您的页面列表中生成。

自定义您的搜索页面

现在您已经创建了自定义搜索页面,您可以自定义显示。在文本编辑器中打开您的 searchpage.php 并在那里进行编辑。在内容 div 中 searchform.php 的 get_search_form() 函数上方,您可以添加文本以帮助访问者搜索您的网站。

我的网站包含关于 WordPress, 网页设计, 网站开发, 和 CSS。

要搜索我的网站,请使用下面的表格。

<?php get_search_form(); ?>

您可能希望包含关键字列表或其他信息、图像或详细信息,以自定义您的自定义搜索页面。

保留搜索页面结果和分页 将自定义应用到搜索模板时,搜索结果和分页可能会停止工作。为了避免这些问题,任何开发人员需要做的第一件事就是将以下代码添加到他们的搜索模板的开头,以确保保留原始的 WordPress 查询。要自定义查询,请将附加参数附加到(数组)$search_query。通过新的 $wp_query 对象执行 $search_query,关于 WP_Query 对象的更多信息可以在 WP_Query 中找到。

<?php
global $query_string;

$query_args = explode("&", $query_string);
$search_query = array();

if( strlen($query_string) > 0 ) {
    foreach($query_args as $key => $string) {
        $query_split = explode("=", $string);
        $search_query[$query_split[0]] = urldecode($query_split[1]);
    } // foreach
} //if

$search = new WP_Query($search_query);
?>

可在 WP_Query 中找到其他自定义参数。

显示总结果

要从搜索结果页面 search.php 访问搜索结果的总数,您应该使用 wp_query 对象检索找到的帖子总数。

<?php
global $wp_query;
$total_results = $wp_query->found_posts;
?>

有关 WP_Query 的更多信息,请访问 WP_Query。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多