=== Highlight Search Terms === Contributors: RavanH Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ravanhagen%40gmail%2ecom&item_name=Highlight%20Search%20Terms&no_shipping=0&tax=0&bn=PP%2dDonationsBF&charset=UTF%2d8 Tags: search, search terms, highlight, hilite, mark Requires at least: 3.7 Requires PHP: 5.6 Tested up to: 6.5 Stable tag: 1.8.3 Very lightweight (vanilla) Javascript that wraps search terms in an HTML5 mark tag within WordPress search results. == Description == Highlights search terms within WordPress generated search results, both on the search results page _and_ on each linked post page itself. This plugin is light weight and has no options. It started as very simple fusion between How to Highlight Search Terms with jQuery - theme hack by Thaya Kareeson and Search Hilite by Ryan Boren. It has since evolved with many optimizations, HTML5 and bbPress support. Since version 1.6 it no longer depends on the jQuery library. **Features** - Click through highlights: Highlights not only on WP search results page but also one click deeper inside any of the found pages - Character and case insensitive (lenient) highlighting - BuddyPress / bbPress compatibility: highlighting within forum searches - Caching (WP Super Cache) compatibility - Search terms wrapped in double quotes now considered as single term = What does it do? = This low impact plugin finds all search terms on a search results page inside each post and highlights them with a ` ... ` tag. Note that N is a number starting with 0 for the first term used in the search phrase increasing 1 for each additional term used. Any part of a search phrase wrapped in quotes is considered as a single term. = What does it NOT do? = There are no CSS style rules set for highlighting. You are free to use any styling you wish but to make the highlights visible in browsers that do not support HTML5 like Internet Explorer 8 or older you absolutely *need to define at least one rule*. Modern HTML5 browsers will use their own highlighting style by default, which usually is a yellow marker style background. = So what do I need to do? = In most cases, it should just work. But you can do two things to ensure backward browser and theme compatibility: 1. **Define CSS rules:** There are _no_ configuration options and there is _no_ predefined highlight styling. You are completely free to define any CSS styling rules in your themes **main stylesheet (style.css)** or the **Custom CSS** tab if the WordPress theme customizer. You can find basic instructions and CSS examples in the [FAQ's](https://wordpress.org/plugins/highlight-search-terms/#faq). 1. **Check your theme:** In most up to date themes (including WP's own default theme) post and page content is shown inside a div with class `hentry`. This means search terms found in post and page content will be highlighted but not similar terms that accidentally show in the page header, sidebar or footer. If your current theme does not use the `hentry` class (yet), this plugin will look for IDs `content`, `main` and finally `wrapper` but if none of those are found, it will not work for you out of the box. See the last of the [FAQ's](https://wordpress.org/plugins/highlight-search-terms/#faq) for ways to make it work. = Available hooks and filters = 1. `hlst_query_vars` - The array of WordPress query variables that the plugin will identify as a search query. Must return an array. Default: `['search_terms','bbp_search']` (WordPress abd bbPress search) 1. `hlst_input_get_args` - An array of GET variables that the plugin will identify as a search query. Must return an array. Default: `['hilite']` (for click-through highlighting) 1. `hlst_selectors` - The array of possible HTML DOM element identifiers that the script will try. The first viable identifier it finds elements of will be scanned for search terms to mark, the rest is ignored. So the order is important here! Start with the element closest to, but still containing all the post/page title, excerpt or content. 1. `hlst_events` - The array of DOM event listeners that the inline script will watch for. Default: `['DOMContentLoaded','post-load']` (on Document Ready and for Jetpack Infinite Scroll and others). 1. `hlst_inline_script` - The inline script that will be added to the plugin script file. Can be used to add to or alter the inline script. Must return a string. = Known issues & development = 1. If your theme does not wrap the main content section of your pages in a div with class "hentry" or HTML5 article tags, this plugin might not work well for you out of the box. However, you can _make_ it work. See the last of the [FAQ's](http://wordpress.org/extend/plugins/highlight-search-terms/faq/) for an explanation. 1. [Josh](http://theveganpost.com) pointed out a conflict with the ShareThis buttons plugin. Since then, that plugin has been completely rewriten so please let me know if the problem still exists. Thanks! Please file bug reports and code contributions as pull requests on [GitHub](https://github.com/RavanH/highlight-search-terms). == Frequently Asked Questions == = Installation instructions = To make it work, you will need to take up to three steps, depending on your wishes and WordPress theme. (I) A normal installation and activation procedure; (II) Make sure your theme uses any of the recognized classes or ID's for the post content div so that the script knows where and where not to look for search terms; _and_ (III) optionally add CSS styling rules to get highlighting for older browsers that do not support HTML5 like Internet Explorer 8 and below. **I.** [Install now](http://coveredwebservices.com/wp-plugin-install/?plugin=highlight-search-terms) _or_ use the slick search and install feature (Plugins > Add New and search for "highlight search terms") in your WP2.7+ admin section _or_ follow these basic steps. 1. Download archive and unpack. 2. Upload (and overwrite) the /highlight-search-terms/ folder and its content to the /plugins/ folder. 3. Activate plugin on the Plug-ins page **II.** In most up to date themes (including WP's own Default theme) post and page content is shown inside an `ARTICLE` element or `DIV` with class `hentry`. This is recognized by the hilite script, which means search terms found in post and page content will be highlighted but _not_ similar terms that coincidentally reside in the page header, menu, sidebar or footer. If your current theme does not use these common designations (yet), this plugin will look for some other possible tags like `#content`, `MAIN`, `#wrapper` (which might include the header, sidebar and footer areas) and finally the `BODY`. If this causes issues on your theme, see the last of the [FAQ's](https://wordpress.org/plugins/highlight-search-terms/#faq) for ways to make it work. **III.** Optionally add at least _one_ new rule to your themes stylesheet or the Custom CSS editor to style highlightable text. For example use `.hilite { background:#D3E18A; }` to get a moss green background on search terms found in the content section (not header, sidebar or footer; assuming your Theme uses a div with class "hentry"). Please find more examples in the FAQ's below. = I do not see any highlighting! = This plugin has _no_ configuration options page and there is _no_ predefined highlight styling. For any highlighting to become visible in browsers that do not support HTML5 like Internet Explorer 8 or older, you have to complete step III of the installation process. Edit your themes stylesheet (style.css) or the WordPress theme customizer Custom CSS tab to contain a rule that will give you exactly the styling that fits your theme. If that's not the issue, then you might be experiencing a bug or plugin/theme conflict. Time to get some [Support](https://wordpress.org/support/plugin/highlight-search-terms/) :) = I want to customize the highlighting but have no idea what to put in my stylesheet. Can you give me some examples? = Go in your WP admin section to Appearance > Customize > Custom CSS and add one of the examples below to get you started. For a moss green background highlighting: .hilite { background-color: #D3E18A; } Yellow background highlighting: .hilite { background-color: yellow; } A light blue background with bold font: .hilite { background-color: #9CD4FF; font-weight: bold; } Orange background with black font: .hilite { background-color:#FFCA61; color: #000000; } = Please give me more advanced CSS examples = If you want to give different terms used in a search phrase a different styling, use the class "term-N" where N is a number starting with 0, increasing 1 with each additional search term, to define your CSS rules. The below example will make every instance of any term used in the query show up in bold text and a yellow background except for any instance of a second, third and fourth term which will have respectively a light green, light blue and orange background. /* Default highlighting, but bold text. */ .hilite { background-color: yellow; font-weight: bold; } /* Moss green highlighting for second search term only. */ .term-1 { background-color: #D3E18A; } /* Light blue highlighting for third search term only. */ .term-2 { background-color: #9CD4FF; } /* Orange highlighting for fourth search term only. */ .term-3 { background-color:#FFCA61 } Keep in mind that for the _first_ search term the additional class "term-0" is used, not "term-1"! = Terms outside my post/page content get highlighted too = The script will search through your page source code for viable sections that usually contain page or post content, most commonly used in WordPress themes. Like ARTICLE or a DIV with class "hentry". If that is not available, the script will look for other commonly used divs like #content, #main, #wrapper. However, in your particular theme, none of these divs might be available... Let's suppose your theme's index.php or single.php has no `