Search code examples
wordpressrelevanssi

Relevanssi - Duplicate Searches logged


I'm using (and loving) Relevanssi plugin for WordPress. Having a problem though with searches being logged twice in user searches.

Found this comment in the plugin comments about it being a problem with the template.

When digging around my search template, I just removed everything, then added things piecemeal until I had double results again.

This is the line in my search template that seems to be the trouble maker, but I don't necessarily see why.

<div style="background-image: url();"></div>

It makes 0 sense to me. If that bit of STATIC html is in the content-search.php template, I get double searches logged. If I remove it, or if all of the articles have get_the_post_thumbnail_urls, then I only get one search logged.

It seems to have something to do with style="background-image:url();" not having a value?

Here's the bigger picture:

search.php:

<?php  
  global $wp_query;

  if ( $wp_query->found_posts > 12 ) {
    $search_count = '1 - ' . $wp_query->post_count . ' of ' . $wp_query->found_posts;
  } else {
    $search_count = $wp_query->post_count;
  }

?>
<div class="search-pg-header">
  <?php include get_template_directory() . '/templates/partials/search-form.php'; ?>
  <?php if ( get_search_query() !== '' ) { ?>
     <h1>Showing <?php echo $search_count; ?> results for <?php echo get_search_query() ?></h1>
  <?php } // end if ?>
</div>
<div class="posts-container">
  <?php if ( have_posts() ):
    while ( have_posts() ) : the_post();
      get_template_part( 'templates/content', 'search' );
    endwhile;
  else: ?>
    <p>There are no articles that matched your search.</p>
  <?php endif; ?>
</div>
<?php if (  $wp_query->max_num_pages > 1 ) { ?>
  <button>Show More</button>
<?php } // end if ?>

content-search.php:

<article data-link="<?php the_permalink(); ?>">
  <div style="background-image: url(<?php the_post_thumbnail_url('card-white');?>);"></div>
  <div>
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <?php if (get_post_type() === 'post') { get_template_part('templates/entry-meta'); } ?>
    <?php if ( has_excerpt() ) {?>
      <p><?php echo get_the_excerpt(); ?></p>
    <?php } //end if ?>
  </div>
</article>

Solution

  • I did a fresh install of Wordpress and tested out this bizarre theory with 2017 theme. True enough, if I add <div style="background-image:url();"></div> to the template template-parts/post/content-excerpt.php then duplicate searches are logged.

    If that div has an image: <div style="background-image:url(http://image.com);"></div> only one search is logged.

    As Mikko Saari (Relevanssi) so kindly helped me with, this is actually unintended behavior from the browser.

    It's definitely nice to at least have an explanation for this.

    I was able to prevent this by just putting a check to see if there was a bkgd image before I rendered the inline style to the page, and now I know to be much more careful with this kind of thing in the future!

    $style = ! empty( get_the_post_thumbnail_url($the_post, 'card-white') ) ? 
             'style="background-image: url(' . get_the_post_thumbnail_url($the_post, 'card-white') . ');"' : '';
    
    <div class="article-card__img" <?php echo $style; ?>></div>