Genesis Simple FAQ

A simple plugin to handle FAQ layout and interaction with a shortcode.

Author:StudioPress (profile at wordpress.org)
WordPress version required:4.8
WordPress version tested:5.4.1
Plugin version:0.9.2
Added to WordPress repository:15-08-2017
Last updated:13-04-2020
Warning! This plugin has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.
Rating, %:96
Rated by:4
Plugin URI:https://github.com/studiopress/genesis-simple...
Total downloads:52 578
Active installs:10 000+
plugin download
Click to start download

A simple plugin to handle FAQ layout and interaction with a shortcode.

DEPRECATION NOTICE

This plugin is now deprecated and will no longer receive feature updates.

Alternatives:
– Block Editor users: build an FAQ page with the Atomic Blocks plugin using the Accordion block.
– Classic Editor users: check out the wide range of other FAQ plugins.

Usage

Adding a FAQ is easy and relies on custom post types to organize and format your FAQs. To add an FAQ, do the following:

  1. Go to Genesis Simple FAQ > All FAQs.
  2. Enter a question in the Title box (required).
  3. Enter an answer into the Content Editor (required).
  4. Set a category, if applicable (optional).
  5. Click publish.

To find the shortcode for that specific FAQ:

  1. Go to Genesis Simple FAQ > All FAQs.
  2. The shortcode will be displayed in the table for each FAQ.

When using the shortcode to display your FAQs, you can either display all FAQs by adding the shortcode without any parameters:

[gs_faq]

Or you can customize the display of FAQs using the following parameters:

  • id: The FAQ ID, either singular or a comma-separated list.
  • cat: The FAQ category ID, either singular or a comma-separated list.
  • limit: The number of FAQs that should be displayed.

For example, FAQs can be displayed using one or more FAQ post type ID:

[gs_faq id="12, 24"]

Or by one or more category ID:

[gs_faq cat="10, 11"]

You can also specify how many FAQs will be displayed. For example:

[gs_faq cat="10, 11" limit="10"]

By default, the limit is set to the number of posts you’ve set to display in Settings > Reading.
Enter -1 to display an infinite number of FAQs.

NOTE: shortcodes should not be entered on consecutive lines, like so:

[gs_faq id="X"]
[gs_faq id="X"]

Instead, shortcodes should be separated by at least one blank line, like so:

[gs_faq id="X"]

[gs_faq id="X"]

You can also show FAQs by using the built in widget. Just go to the Appearance > Widgets screen and drag the Genesis Simple FAQ widget to the widget area where you would like it to display. Then, enter a title and select a category to display FAQs from, and click save.

Filters

Currently, there are three filters: one to toggle JS animation on or off, one to control critical CSS output, and one to control the default FAQ markup.

JS Animation (jQuery Only)

By default, animation is set to true. This will add a slide animation to showing/hiding the FAQ. To remove JS animation and rely on classes to do your state-changing, add the following to your functions.php file:

add_filter( 'gs_faq_js_animation', '__return_false' );

Critical CSS

You can modify the CSS output using the following filter (styles are minified on the front-end):

add_filter( 'gs_faq_critical_styles', 'your_custom_function' );
function your_custom_function( $styles ) {

    $styles =
        '.gs-faq {
            padding: 5px 0;
        }

        .gs-faq__question {
            display: block;
            text-align: left;
            width: 100%%;
        }

        .gs-faq__answer {
            display: none;
            padding: 5px;
        }';

    return $styles;

}

Default Markup

The following filter accepts 3 parameters:
$template: Full string of HTML to output.
$question: The title of the FAQ, usually a question.
$answer: The content of the FAQ, usually the answer.

add_filter( 'gs_faq_template', 'your_custom_function', 10, 3 );
function your_custom_function( $template, $question, $answer ) {

    $template = sprintf(
        'The question: %s, and the answer: %s.',
        $question,
        $answer
    );

    return $template;

}