=== CatalogFAQ — Product Answers ===
Contributors: catalogfaq
Tags: faq, accordion, woocommerce, gutenberg, elementor
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 8.2
Stable tag: 1.2.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Publish reusable FAQs on pages and products with groups, blocks, shortcodes, and WooCommerce assignments.

== Description ==

Reuse rich answers and ordered groups on pages and products. Shared edits update fresh supported placements; cached pages may need refreshing.

Free includes:

* A shared sidebar workspace, four optional read-only Pro examples, and a remembered preview switch for each administrator on each site.

* Guided setup, native editing, answer revisions and a reusable library without paid quotas.
* Ordered groups, FAQ topics and keyboard-accessible selection.
* Page and product-context blocks, shortcodes and WooCommerce product FAQ tabs.
* Direct product and category/tag group assignments. Stores already using Free store-wide defaults keep those defaults and editing access; new store-wide defaults are a Pro workflow.
* Accordion, cards and list layouts, inline search, question links and expand/collapse controls.
* Authenticated previews, versioned JSON/CSV exchange and ZIP backup/same-site restore. Pro adds cross-site ZIP migration and explicit product remapping.
* Optional Elementor widgets and local page-cache integrations.
* Read-only migration from Easy Accordion FREE 3.1.10 classic custom-content accordions; other sources and existing placements need manual work.

Page FAQs need neither WooCommerce nor Elementor. Product tools need WooCommerce; widgets need Elementor. ZIP backups need PHP zip; JSON/CSV does not. Dependencies are not installed automatically.

Optional CatalogFAQ — Product Answers PRO is distributed outside WordPress.org. It contains rules, exceptions, simulations, coverage, bulk execution and activity tools. Free publishing requires no vendor account, payment or licence key.

== External services ==

This Free package has no vendor API, telemetry endpoint, payment API, remote licence check or external update server. Its PHP, JavaScript, CSS and icons are local. It uses WordPress-provided editor libraries. Product and GPL licence-information links are ordinary links, not background API requests.

= Content you choose to embed =

External media is optional. Adding an external embed URL to an answer can cause WordPress's oEmbed system to contact that URL's host and its discovered or registered provider when the answer is edited, previewed or rendered. This can occur for an unpublished draft. The provider receives the media URL and server request information, including the server IP address and WordPress HTTP user agent; URLs can contain information you put in them. A failed or subsequently filtered embed can still have caused a provider request. Do not put secrets or private signed URLs in an answer.

An allowed player, image, audio or video URL in the resulting answer can also make the viewer's browser contact that host. The host receives the resource URL, viewer IP address, browser information and any referrer/cookies the browser permits. Provider assets, cookies or analytics are separate from this plugin's own behavior. This plugin does not implement a visitor media-consent banner or a click-to-load blocker. Use local media or ordinary links if external loading is unwanted, or configure your site's consent system before publishing remote media.

The renderer permits HTTPS player iframes only for these services:

* [YouTube](https://www.youtube.com/) (www.youtube.com and www.youtube-nocookie.com): selected video playback. [Terms](https://www.youtube.com/static?template=terms) and [Privacy](https://policies.google.com/privacy).
* [Vimeo](https://vimeo.com/) (player.vimeo.com): selected video playback. [Terms](https://vimeo.com/legal/) and [Privacy](https://vimeo.com/legal/privacy).
* [Dailymotion](https://www.dailymotion.com/) (www.dailymotion.com): selected video playback. [Terms](https://legal.dailymotion.com/en/terms-of-use/) and [Privacy](https://legal.dailymotion.com/en/privacy-policy/).

The iframe allowlist is an output filter, not a list of every server request: WordPress oEmbed discovery and author-selected media can use other hosts. The host/provider depends on the URL you or an importer select, and site extensions can change WordPress providers. Review that provider's terms and privacy notice before adding its URL. See [WordPress embeds](https://wordpress.org/documentation/article/embeds/). No provider key or provider registration is needed for ordinary local FAQ publishing.

== APIs and local integrations ==

Your local WordPress REST API handles choices, previews, cache status and jobs (catalog-faq/v1, including inline answer creation), and FAQ/topic editing (wp/v2). Requests contain IDs, searches, settings, drafts or commands, protected by cookie authentication, nonces and management/object permissions. Import/export and settings use local admin-post.php with action nonces. These are not vendor services.

WooCommerce, WordPress blocks/posts/meta/options/cron, Elementor and cache-plugin hooks run locally. Cache adapters do not call CDN/vendor purge APIs. WordPress, hosting and other plugins have their own behavior.

== Privacy and stored data ==

The plugin itself does not collect visitor analytics, read customer/order records or send site data to its vendor. This does not prevent author-selected media from contacting its provider as described above.

WordPress stores content/revisions, topics, groups, assignments, settings, per-user setup/help choices and private import/index/job records. These can include actor IDs, site origin, mappings and before/after content. Authorized exports download selected content/configuration to the administrator; exports and backups need separate protection.

Finished job journals become cleanup candidates after 90 days by default and only after their revert window expires. Unfinished jobs, retained import plans and content can remain. Cleanup is bounded and depends on WordPress scheduled tasks running; expiry is not a guaranteed deletion time. Content export is not a personal-data export of all operational history.

Deactivation and default uninstall preserve data. An administrator may enable deletion under Import / export after reviewing the inventory. That cleanup deletes the listed Free content/configuration and shared job records; it does not erase all WordPress user metadata, original source-plugin records, existing page content, backups or Pro-specific configuration. Remove remaining administrative traces separately when needed. Uninstall stops Free's scheduled tasks. If an opted-in deletion fails, uninstall reports the failure and keeps the deletion preference so you can resolve the problem and retry; earlier successful deletions are not rolled back.

== Installation ==

1. Upload catalogfaq-product-answers-1.2.2.zip using Plugins > Add New > Upload Plugin, or place its catalogfaq-product-answers folder in wp-content/plugins.
2. Activate CatalogFAQ — Product Answers.
3. Follow CatalogFAQ > Start here, or open FAQ library and Groups.
4. Place a CatalogFAQ block or generated [ctlgfaq_faq] shortcode. On WooCommerce sites, choose product/category/tag assignments. New store-wide defaults require Pro.

= Moving from Catalog FAQ 0.2.4 or earlier =

The directory name has changed. WordPress installs this package alongside the old catalog-faq folder; it does not replace that folder automatically. Back up the database and plugin files and test the switch on staging first.

1. If Pro is active, review its deactivation impact and deactivate it first. Pro rules stop applying during the switch.
2. Deactivate the older Catalog FAQ Free plugin. Do not use WordPress's Delete action: an earlier data-deletion opt-in could erase shared content, and the old uninstaller stops shared scheduled jobs.
3. Install and activate CatalogFAQ — Product Answers 1.2.2. Existing questions, groups, assignments, settings, shortcodes, blocks and journals use their existing identifiers and are reused.
4. If you use Pro, replace its existing files with the currently distributed CatalogFAQ — Product Answers PRO 1.1.3 or a compatible newer release, then activate it. The Pro folder remains catalog-faq-pro. Pro 1.1.3 supports Free core API 2, retained in 1.2.2; a Pro 1.2.0 download is not required.
5. After verification, the inactive old catalog-faq folder may be removed directly with your hosting file manager or SFTP, without running its uninstaller. Keep your backup.

The replacement refuses activation while the old Free copy is active. Bulk processing and undo need compatible Pro; existing 30-day revert deadlines continue during migration. Only the Free ZIP belongs in WordPress.org. For an in-place update with Pro active, review its deactivation impact, deactivate Pro without uninstalling, update Free to 1.2.2, then reactivate the compatible Pro add-on. Published Pro 1.1.3 remains compatible; it requires Free 1.1.3 or later. Existing content remains stored during the switch. The older-folder migration above requires deactivating both copies in the stated order.

== Frequently Asked Questions ==

= Can I use Free indefinitely? =
Yes. Its included publishing tools do not expire and are not unlocked by payment. Technical request/batch limits are not paid library quotas.

= What happens when Pro is disabled? =
Free content and assignments remain. Pro rules and exceptions stop applying: hidden questions can return, local wording returns to shared wording, and rule-only answers can disappear. Review Pro's deactivation comparison first. Bulk execution pauses, and revert requires compatible Pro to be reactivated within the original 30-day window. Stored journals are retained; reactivation does not reset their deadline.

= How does assignment inheritance work? =
Direct groups are followed by direct category memberships, tags, then any saved store-wide defaults. Questions are deduplicated. Parent categories do not assign to descendants. A separate FAQ does not replace an inherited one; reorganize assignments or use Pro exceptions.

= Which themes and editors are supported? =
Classic WooCommerce themes can use the product FAQ tab. With block themes, add the Catalog Product FAQ block to your Single Product template in Appearance > Editor; assigning a group alone does not insert that block. Verify the published product on staging. Unsupported answer blocks are retained and reported, but not rendered. Dynamic block bindings are retained in saved content but do not run in shared answers; check the saved fallback text in the answer preview.

= Can I move content? =
Use JSON/CSV for portable FAQ content and ZIP for large same-site backup/restore. Cross-site assignment mapping, explicit product remapping and cross-site ZIP import require Pro; Free can still import FAQ content from another site. Existing in-progress Free bundle plans remain resumable. Simple spreadsheets use Question, Answer and Group columns; Pro can also map SKU assignments. Download the template from Import / export. New spreadsheet FAQs are drafts until deliberately published. Reimport matching spreadsheet rows only updates them when explicitly selected. The advanced exchange CSV retains record_type, record_uuid and data_json columns. Review protected/scheduled content and unresolved references before importing. Easy Accordion migration does not rewrite source shortcodes.

= Why can pages still show old wording? =
Display & help > Page cache shows status and retry. Tested: WP Super Cache 3.1.4 and W3 Total Cache 2.10.7 local disk caching. Handle host/CDN/browser/multisite caches separately. Page-cache purges do not flush object caches; failed database transactions may clear object caches to discard rolled-back values. Rebuilding caches may slow subsequent requests.

= Does it generate answers or guarantee search results? =
No. It publishes your answers without FAQPage structured data or ranking, rich-result, traffic or revenue promises.

== Source and licence ==

Readable PHP, JavaScript and CSS are included; no compilation is required. GPLv2 or later; see LICENSE.txt. The Free installer excludes the website, tests and Pro code.

== Workspace and optional discovery ==

The sidebar uses local assets. More Plugins is a local collection: no catalogue request, telemetry or installation runs when it opens. Product links open Plugins.shop in a new tab; availability can change, so check the product page. Free Pro examples are fictional and cannot change your FAQs.

The preview switch is saved in WordPress user metadata separately for each site. It is retained by default and removed for that site if the existing delete-data option is enabled before uninstall. The browser tab remembers focus and collapsed-navigation preferences in session storage; these are optional and navigation works without JavaScript. The native block editor keeps its own layout.

== Changelog ==

= 1.2.2 =
* Reject incorrectly typed JSON/CSV exchange fields with a clear validation error before importing. Prevent malformed origins and topic/assignment slugs from causing PHP errors.


= 1.2.1 =
* Report failed import writes accurately, and pause when import results cannot be saved without advancing the affected record.
* Keep dynamic block bindings from running inside shared answers; show saved fallback content with an editor warning.
* Prevent older preview responses from replacing newer results, and protect unsaved picker choices when changing selection screens.
* Improve inline answer creation, narrow-screen layouts and block preview errors; refresh import guidance after connection recovery.
* Keep an opted-in deletion preference after a failed uninstall cleanup so the failure can be resolved and cleanup retried.

= 1.2.0 =
* Add the approved shared sidebar, responsive navigation and optional focus view around native CatalogFAQ screens.
* Add four clearly labelled Pro examples and a per-user, per-site switch without enabling paid tools.
* Add a local More Plugins collection with links to Plugins.shop.

= 1.1.3 =
* Preserve explicit paused results from job extensions and resumable imports without consuming the pending row.
* Align the current Product Answers release with the public 1.1.2 upgrade path. Free needs no licence or publisher activation.
* Install the matched 1.1.3 Pro add-on separately if needed; its licence service is not included in this Free package.

= 0.2.8 =
* Create and select an FAQ inside the group editor, with explicit draft/published status and safe request retries.
* Add ordinary question/answer spreadsheet import, readable task choices and clearer partial-import review.
* Explain Free and Pro through practical merchant tasks in the single Explore Pro screen, with readable phone layouts.
* Guide block-theme users to place the Catalog Product FAQ block in their product template.

= 0.2.7 =
* Introduce the Free/Pro split for new store-wide defaults and advanced migration, preserving existing Free default editing and basic content portability.


= 0.2.6 =
* Respect native content creation permissions during import review, execution and guided FAQ/page setup, including permissions revoked after review.
* Require native publication permission when creating or changing FAQs to private status.

= 0.2.5 =
* Rename the directory plugin to CatalogFAQ — Product Answers and align its translation domain and Pro dependency.
* Protect migration from an active legacy Free copy while retaining saved data and placement identifiers.
* Count and paginate only editable choices; broad searches ask for a more specific title or SKU.
* Consolidate Free promotion into the optional Explore Pro screen.
* Schedule recurring cleanup at init to avoid triggering WooCommerce translations before initialization.
* Set titles for hidden selection and shortcode screens to avoid PHP 8.5 deprecations.
* Honor an explicit uninstall-cleanup opt-in after a fresh WordPress request; default uninstall still retains data.


= 0.2.4 =
* Set Author URI to https://plugins.shop/.

= 0.2.3 =
* Move bulk execution and conditional revert into the separate Pro add-on.
* Keep Free imports, indexing and shared job storage on core API 2.
* Retain existing journals; compatible Pro is required to resume or revert bulk work.

= 0.2.2 =
* Validate bundle commands and upload metadata; reject unsupported action shapes.
* Bound usage summaries without full matching-row counts and preserve the continuation notice.
* Document required SQL, core hooks and read-only filters.

= 0.2.1 =
* Protect private FAQ/topic REST access and document external media, local APIs and retained data.

= 0.2.0 =
* Reviewed imports/ZIP bundles, searchable selection and retained workflows.

== Upgrade Notice ==

= 1.2.2 =
Replace Free files without uninstalling. Malformed import fields now return a useful validation message instead of causing PHP errors. Existing FAQs and settings are retained; Pro 1.1.3 remains compatible.

= 1.2.1 =
Replace Free files without uninstalling. Improves import failure reporting, previews and cleanup retries. Shared answers show saved fallback text instead of running block bindings; review affected answers. Pro 1.1.3 retains core API 2 compatibility. Back up first.

= 1.2.0 =
Replace Free files without uninstalling. Published Pro 1.1.3 remains compatible with Free 1.2.0; a Pro 1.2.0 download is not required. Your answers, assignments and licence state stay in place. This update adds navigation and read-only examples.

= 1.1.3 =
Supports safe pausing of extension jobs/imports. Free needs no licence. If using Pro, install matching Free 1.1.3 first, then Pro 1.1.3 and activate its licence. Saved answers stay in place.


= 0.2.8 =
Adds inline FAQ creation and simple spreadsheet import. For Pro installations, deactivate Pro without uninstalling, update Free first, then install and reactivate Pro 0.2.8. Existing content is retained.

= 0.2.6 =
Import and guided setup now respect revoked content creation permissions, and creating or changing FAQs to private status requires publication permission. Replace Free 0.2.5 without uninstalling. Pro 0.2.5 remains compatible. For 0.2.4 or earlier, follow the directory migration instructions below.

= 0.2.5 =
The Free folder changed. Follow the migration instructions; deactivate older Free/Pro copies without uninstalling, activate the new Free folder, then replace and activate matching Pro. Back up first.


= 0.2.3 =
Update Free first, then Pro 0.2.3, without uninstalling. Content and journals are retained. Bulk resume/revert needs compatible Pro; existing revert deadlines do not restart.
