Dotes FAQ Generator Wordpress Plugin - Rating, Reviews, Demo & Download
Plugin Description
Dotes FAQ Generator lets you write frequently asked questions in groups and show them anywhere on your site.
- FAQ groups and categories with search and status in the admin list.
- Native block “FAQ (Dotes)” and the
[dotes_faq]shortcode. - Accordion or open list display, chosen globally, per FAQ or per block/shortcode.
- FAQPage structured data (JSON-LD) with every question of each group, including the FAQs selected in the post. It can be switched off in the settings.
- “Was this answer helpful?” votes with duplicate-vote protection.
- FAQ of the post: pick FAQs in a metabox (posts and pages) and insert them before or after the content.
- Search inside a FAQ list, global colours.
- Backup and import of FAQs, categories and settings.
- Create FAQs from the post editor (toolbar button and modal) and insert their shortcode.
Shortcode
[dotes_faq id="12"]shows FAQ group 12.[dotes_faq category="support" limit="5"]lists the FAQs of a category (ID or slug).[dotes_faq toggle="list"]forces the open-list mode (accordionis the default).title="..."(ortitle="false"to hide the title),search="false"andfeatured="true"are also available for lists.
For developers
The plugin exposes actions and filters for extensions, for example dotes_faq_display_modes, dotes_faq_render_output, dotes_faq_admin_tabs, dotes_faq_settings_rows, dotes_faq_editor_rows, dotes_faq_style_fields, dotes_faq_item_css, dotes_faq_schema_data, dotes_faq_schema_faq_ids, dotes_faq_output_schema, dotes_faq_metabox_post_types, dotes_faq_group_saved, dotes_faq_vote_recorded, dotes_faq_client_ip, dotes_faq_store_ip and dotes_faq_public_nonce_actions. Use dotes_faq_generator() to get the plugin instance.
Sites behind a proxy or CDN
Duplicate votes are detected by the visitor IP address, read from REMOTE_ADDR. Behind Cloudflare, a load balancer or another reverse proxy every visitor may arrive with the proxy address, so only the first vote would be accepted. Return the real visitor IP with the dotes_faq_client_ip filter, reading a header that only your proxy sets (for example CF-Connecting-IP on Cloudflare), or adjust the stored value with dotes_faq_store_ip (it receives the address already anonymised, or an empty string when IP collection is off).
add_filter( 'dotes_faq_client_ip', function ( $ip ) { return isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ) : $ip; } );
Page cache
The vote buttons work on cached pages: when the security token printed in a cached page has expired, the script asks the site for a fresh one (dotes_faq_nonce AJAX action) and sends the vote again, once.
Privacy
When a visitor votes on a FAQ (“Was this answer helpful?”), the plugin stores the vote in your own database: FAQ ID, vote, date, user ID (logged-in users) and IP address, to block duplicate votes.
- The visitor IP address is anonymised before it is stored (last IPv4 octet / last 80 bits of IPv6 set to zero). You can disable IP storage in FAQ Generator > Geral.
- The plugin adds a suggested text to Settings > Privacy and registers a personal data exporter and eraser for the votes of registered users.
- Backup files are kept in a protected folder and are only downloadable by administrators; they are deleted after download, and files older than 24 hours are removed whenever a new export is created.
- The plugin does not track views and does not contact any external service. No data is sent to Dotes or any third party.
External services
This plugin does not connect to any external service. Every request it makes goes to your own site (admin-ajax.php), and Font Awesome and DataTables are bundled with the plugin instead of loaded from a CDN.
Third-party libraries
- Font Awesome Free 6.7.2 — icons CC BY 4.0, fonts SIL OFL 1.1, code MIT (assets/vendor/fontawesome/LICENSE.txt).
- DataTables 3.1.5 and its Bootstrap 4 integration — MIT (assets/vendor/datatables/LICENSE.txt).



