【问题标题】:WordPress change search resultsWordPress 更改搜索结果
【发布时间】:2019-03-11 05:41:17
【问题描述】:

我的 WordPress 主题(“悉尼”)显示搜索结果有误。我只想显示 WooCommerce 产品,而不仅仅是列出帖子。

这些应该排列在一个漂亮的网格中,如下图所示:

目前结果是这样列出的

.

如何更改搜索结果的显示方式?

目前我的search.php 是这样的:

<?php get_header(); ?>

<div id="primary" class="content-area col-md-9">
    <main id="main" class="post-wrap" role="main">

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

        <header class="page-header">
            <h3><?php printf( __( 'Search Results for: %s', 'sydney' ), '<span>' . get_search_query() . '</span>' ); ?></h31>
        </h3>
        </header><!-- .page-header -->

        <?php /* Start the Loop */ ?>
        <?php while ( have_posts() ) : the_post(); ?>

            <?php
            /**
             * Run the loop for the search to output the results.
             * If you want to overload this in a child theme then include a file
             * called content-search.php and that will be used instead.
             */
            get_template_part( 'content', 'search' );
            ?>

        <?php endwhile; ?>

        <?php the_posts_navigation(); ?>

    <?php else : ?>

        <?php get_template_part( 'content', 'none' ); ?>

    <?php endif; ?>

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

非常感谢你们!

** 更新 kashalo 提供的解决方案部分有效,但搜索结果与产品页面看起来仍然略有不同,并且仅列在一列而不是网格中。

** 更新 Alexander Wigmore 建议的解决方案看起来几乎是我想要的样子。将page.php 复制到search.php 中的唯一问题是,产品仍会显示为wheird,但不是在它们显示在它们适合的类别中时。例如:当搜索saat 结果最初仅以文本显示产品,但通常在 Saatgut 类别下。

【问题讨论】:

  • 您需要更改content-search.php 而不是您在上面发布的这个文件
  • 问题是我没有完整的数据库访问权限,并且 content-search.php 没有显示在 WordPress 编辑器中。
  • 这个文件不在你的主题导演的数据库中
  • 你的店铺页面的样式和上图一样吗?
  • 是的,这些截图是我店的原始截图。

标签: php wordpress search woocommerce


【解决方案1】:

我的建议是不要直接修改 wp 或主题模板的搜索文件,而是使用子主题的好习惯。对于结果的设计显示,您可以使用 css 进行一些操作以根据需要对其进行自定义,而不是让结果仅显示您可以使用基于您正在使用的主题构建的任何过滤器(如果有)或自己创建的产品过滤结果的函数(也称为钩子)。

过滤结果的示例如上代码:

add_action( 'pre_get_posts', 'filter_woocommerce_products' ); // the hook

function filter_woocommerce_products( $query ) { // the function
    if( ! is_admin() && is_search() && $query->is_main_query() ) {
        // verify if can use the search function and the search string is from the search call
        $query->set( 'post_type', 'product' ); // filter the posts with type products that corrispond to woocommerce products.
    }
}

并且这个函数必须保存在你的主题或者子主题的function.php文件中。

有关更多信息,我建议您阅读有关子主题和 wp 页面上的 pre_get_posts 文档的更多信息。

希望对您有所帮助,欢迎随时提问。

【讨论】:

  • 我也可以将搜索结果限制为仅在“象牙搜索”插件中的产品,但结果显示方式的问题仍然存在。要了解我希望搜索结果的外观以及它们当前的外观,请查看我在说明中添加的图片。
  • 我已经看到了您包含的图片,通常这种方式是通过使用主题的特定模板完成的,并且使用 css 进行样式设置。我建议你尝试探索你想要的页面的css,开始修改结果页面的外观,如果你有任何问题,你可以分享你用来设置样式的代码。只是要求我们为您做这件事不是 SO 的目的。希望你明白重点。请在此处查看新的开始:shift8web.ca/2016/03/customize-wordpress-search-results-page
  • 对不起。我不想以任何方式听起来不尊重。我的目的不是要求您提供详细说明,而是想知道在哪里设置更改,因为我无法自己解决这个问题。这可能与我是 web 开发的新手有关,例如 css、js 和 html。我才刚刚开始并且有基本的知识。我寻求帮助的原因是因为我找不到任何适合我需要的解决方案。如果这个意图不符合 SO 的目的,我很抱歉。
  • 绝对没问题 :) 稍微看一下悉尼页面的官方页面似乎它没有任何特定的产品模板,所以在这种情况下,wp 只需采用默认值,这很糟糕。查看您的代码, get_template_part 函数不采用任何内容来设置页面样式,因此请更改 get_template_part( 'content', 'none' );到 get_template_part('content', get_post_format());使用您的主题的帖子格式,请分享结果。谢谢。
  • 非常感谢您的建议。我已经尝试了您建议的更改,但此代码仅将产品图片添加到搜索结果中。 kashalo 建议的更改对我来说效果更好,但可以改进一点。
【解决方案2】:

您需要修改 Wordpress 处理搜索的方式。 这可以通过添加“动作”轻松完成,将以下代码添加到您的 functions.php 文件中。

function searchfilter($query) {

    if ($query->is_search && !is_admin() ) {
        $query->set('post_type',array('product'));
    }

return $query;
}

add_filter('pre_get_posts','searchfilter');

这将使搜索页面只显示产品。值得注意的是,您可以通过 array 在此行中重新添加其他帖子类型:$query-&gt;set('post_type',array('product'));

【讨论】:

  • 我也可以将搜索结果限制在“象牙搜索”插件中的产品,但结果显示方式的问题仍然存在。
  • @TorbenWiesbach 看起来您的搜索结果页面的样式与您的产品/存档页面的样式不同。尝试将产品存档的内容复制/粘贴到搜索结果模板文件中。
  • 抱歉这么晚才回复。我也尝试了你的建议,但它只是部分奏效。我还在主帖中添加了结果图片。
猜你喜欢
  • 2019-05-30
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 2018-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多