=== CatalogFAQ — Product Answers PRO === Contributors: catalogfaq Tags: faq, woocommerce, product faq, catalog, accordion Requires at least: 6.8 Requires PHP: 8.2 Tested up to: 7.1 Stable tag: 1.1.3 License: GPL-2.0-or-later License URI: https://www.gnu.org/licenses/gpl-2.0.html Manage FAQ rules, product exceptions, coverage reports and reviewed bulk changes. A private add-on requiring CatalogFAQ Free. == Description == CatalogFAQ PRO is a private add-on, distributed separately from the Free WordPress.org package. Keep CatalogFAQ — Product Answers Free active (1.1.3+ with API 2); use the matching 1.1.3 pair. Pro adds these administrative workflows: * Create and edit store-wide product FAQ defaults. Existing Free stores with saved defaults retain editing access without Pro. * Move large ZIP bundles between sites and explicitly remap product assignments. Free keeps ZIP backup/same-site restore and JSON/CSV content portability. * Show or hide groups using categories, tags and supported parent product types. * Give products local wording, hidden questions or explicit group choices. * Review opposing decisions, priorities and placement explanations; simulate drafts before saving. * Search products by name/SKU and categories/tags by name, without requiring numeric IDs. * Resume coverage/impact scans, review bulk assignments or literal text edits, and conditionally revert journaled changes. * Review private administrative activity and transfer rules/exceptions through the shared exchange. Catalog controls need WooCommerce; shared FAQ reviews do not. Variation-specific rules, customer submissions, AI drafting, SEO outcomes and visitor analytics are outside this release. Bulk execution and conditional revert are implemented in this add-on. Free supplies shared job storage, transactions, imports and indexing. Activate a Pro licence once for this site before making new Pro changes. Saved storefront answers and rules do not call the licence service. Free features remain available without a licence. == Installation == 1. Back up the database and plugin files and test on staging. For an older catalog-faq Free installation, follow the migration instructions in the Free readme: review Pro's deactivation impact, deactivate Pro, then deactivate the old Free copy without uninstalling it. 2. Install and activate CatalogFAQ — Product Answers 1.1.3 or newer with core API version 2 (folder catalogfaq-product-answers). 3. Upload catalog-faq-pro-1.1.3.zip through Plugins > Add Plugin > Upload Plugin, replacing the existing Pro files. The Pro folder is unchanged; do not uninstall it. 4. Activate CatalogFAQ — Product Answers PRO. Existing questions, groups, assignments, rules and journals stay in place; original revert deadlines continue. 5. Open CatalogFAQ > Licence & updates. Enter your Pro licence key, review the connection disclosure, confirm and choose Activate Pro. New Pro changes require successful activation. 6. Open CatalogFAQ > Catalog coverage on a WooCommerce site, or review shared FAQ placements on an ordinary site. The initial installation uses the matched Free and Pro ZIPs. Pro then checks eligible publisher updates through WordPress. Automatic installation follows your WordPress update settings. Install a required Free version first. The plugin does not collect payments or sign you into a website account. Only Free is intended for WordPress.org; Pro is a separate private add-on. Version 1.1.3 succeeds both the public 1.1.2 packages and the local 0.2.8 preview. If your Free folder is catalog-faq, deactivate Pro and that older Free copy without uninstalling either, then activate catalogfaq-product-answers before the new Pro. Do not run both Free copies together. Previously published FAQs and saved rules remain stored. Existing installations without a licence must activate before new Pro changes; no activation is inferred from existing content. == Frequently Asked Questions == = How does rule publication work? = The native rule editor requires a preview of changed answers before publishing an enabled rule. The preview must match your draft, WordPress user/session and current catalog revision, and expires after 20 minutes. The quick preview covers a selected product or a bounded sample, not a guarantee for the whole catalog; use full catalog simulation for wider review. Saving a private draft or pausing a rule does not require enabling a new rule. = Can I leave while a scan runs? = Queued work uses WordPress scheduled tasks. The progress panel reads status without applying changes. Background progress depends on your site cron setup; if work is waiting, use the explicit continuation control or check cron. Refresh results after completion. = What happens if I deactivate PRO? = Free continues reading its basic assignments. Pro rules and product exceptions stop applying: hidden questions may reappear, local wording returns to shared wording, and rule-only FAQs may disappear. Use the deactivation impact review before disabling Pro. Bulk execution pauses, and conditional revert is unavailable until compatible Pro is reactivated. Existing journals remain, but their original 30-day revert deadline continues; reactivation does not reset it. Deactivation and ordinary Pro uninstall preserve stored data and stop Pro's plan/activity cleanup tasks. Free's separately opted-in deletion behavior is not the same as uninstalling Pro. = Does an expired update entitlement remove public answers? = No. Once a successful explicit activation unlocks this site, its existing Pro tools remain available after the update period expires or the service becomes unavailable. The same applies to a licence revoked remotely: new activations and downloads are denied, but earned local use remains. Updates and new-site activation need a currently eligible licence. Disconnect releases the registered site and clears local activation; Remove saved connection clears only local activation and does not release the remote site. Both lock new Pro changes and pause unfinished premium work without deleting answers, saved rules or journals. Mixed imports stop at the next premium row and keep that row for continuation. After activation, explicitly resume paused work; original revert deadlines still apply. A copied database does not unlock a different host or WordPress home path. Each distinct host/path, including staging, uses a site allowance. HTTP-to-HTTPS changes normalize to the same remote site but may require disconnect/reconnect of the saved local URL. New activation and automatic updates support single-site WordPress only. = Are report totals always exact? = Reports show scope, generation and stale/partial state. Unindexed or arbitrary PHP-generated placements remain unknown. Large details may need product-by-product inspection; counts use the actual resolver. = Does Remove direct assignment remove inherited FAQs? = No. Category, tag, global, and rule sources can still keep the group visible. Previews distinguish metadata changes from visible question changes. Explicit product exclusions are a separate operation. = Can I move rules and product exceptions to another site? = With Pro active and appropriate permissions, JSON/CSV exports include the catalog-faq-pro/v1 extension. Groups/questions use UUIDs; taxonomy conditions use slugs. Products resolve by unique exact SKU, explicit override-UUID mapping or checked same-origin ID; cross-site numeric IDs are not used. Review unresolved products, missing terms and omissions before applying. Invalid rules remain editable but do not run on the storefront. Audit logs and job journals are excluded. Each file allows at most 2,000 Pro records and 2 MB of Pro configuration within the core 4 MB limit. These are batch limits, not paid quotas. Free reports but does not execute an unhandled Pro extension. Larger exchanges use the core ZIP bundle exporter’s bounded, ordered parts; cross-site import and explicit remapping require Pro. Protect downloaded content/product references. This exchange is not a WordPress personal-data export. = Can revert overwrite a later edit? = With compatible Pro active, revert restores only eligible journaled changes. A later protected edit produces a conflict and remains intact. The job interface shows the original revert deadline, which is unchanged by updating or reactivating Pro. == APIs and external content == Pro administrative screens call your site's WordPress REST API under catalog-faq-pro/v1 for rule/product searches, rule and exception editing, coverage/impact/simulation reports, saved scans, change previews, jobs and activity records. Bulk selectors also use catalog-faq/v1/choices from Free. Native forms submit to your site's WordPress admin-post.php. Requests carry the action’s selections, search text, drafts or commands, using WordPress authentication and permissions. These content-management requests remain on your own site. The separate licence and update connection described below contacts the publisher. Pro supplies local PHP, JavaScript and CSS and implements no visitor analytics or vendor telemetry. This does not promise zero external traffic: site-authored FAQ answers use Free's rendering facilities. Owner-selected WordPress oEmbed content may cause WordPress to contact the chosen provider; allowed YouTube, Vimeo or Dailymotion iframes and remote images/media may cause visitors' browsers to contact their hosts. Those providers can receive connection and browser information under their own terms and privacy policies. Choose content and consent handling appropriate to your site. See Free's external-services disclosure for provider references. WordPress, themes and other plugins can also make their own requests. == Publisher licence and update service == Service: CatalogFAQ, https://catalogfaq.com/ Endpoint: https://catalogfaq.com/license-api/v1/ Privacy policy: https://catalogfaq.com/privacy.html The licence screen requires an administrator who can update plugins and an explicit confirmation before activation, checking status, disconnecting or removing the saved connection. Before a key is explicitly connected, the plugin makes no publisher licence/update requests. After connection, normal WordPress update checks may contact the same service without another prompt. HTTPS POST requests use the EDD Software Licensing-compatible actions activate_license, check_license, deactivate_license and get_version. They transmit the licence key, site home URL, product identifier, and Pro, WordPress and PHP versions. Standard HTTP connection metadata, including source IP and the WordPress HTTP user agent, also reaches the server. FAQ answers, catalog contents, customer records and orders are not included. A software status response can include entitlement expiry, active site counts and a time-limited download link. Downloading an eligible Pro ZIP contacts catalogfaq.com again using that link. No arbitrary publisher URL can be configured through the plugin. The publisher stores licence entitlement and registered-site information for licensing and delivery. An eligible update uses a short-lived authenticated download URL; the installed plugin validates the archive identity, version, paths and expansion limits before handing it to the WordPress installer. This is not a cryptographically signed-release scheme. WordPress update screens receive a credential-free package marker rather than the private download URL. The key is stored as plaintext in a separate non-autoloaded WordPress option, together with connection state and site-bound local activation proof. Protect database backups and administrator access. It is excluded from FAQ exports, rule histories, activity summaries and the ordinary update-screen data. Short-lived update metadata and download tokens may be cached locally. Removing the saved connection clears the local key and update cache; ordinary plugin deactivation/uninstall retains them and sends no remote request. Disconnect before uninstalling if you want to release the registered site. Removing a local connection does not delete the publisher's licence record. == Privacy and local storage == Pro does not implement shopper/order collection. It stores site-authored FAQ configuration and administrative workflow records in your WordPress database: rules, local product wording, recent rule history, drafts, report snapshots, change previews and job/recovery journals. These records can contain FAQ text, product names/IDs/SKUs, relationships, timestamps and initiating WordPress user IDs. The private activity log stores an actor user ID, UTC time, action/outcome, affected record/job references and a sanitized summary. It resolves the user's current display name when showing the log. Activity summaries intentionally omit full answer snapshots, request bodies and credentials; other workflow records do retain content needed for review or recovery. No audit IP-address, email-address or user-agent collection is implemented. Access to administrative records is permission protected; they are not published as visitor-facing logs. Administrative selection tools keep selected record IDs in browser sessionStorage, scoped to the site and user, so selection can continue across pages. Labels are fetched again with current permissions. This is functional browser storage, not telemetry. = How long are records kept? = * Activity records default to 180 days, adjustable by an authorized administrator from 7 to 3,650 days. Each cleanup pass processes at most 100 expired records and 100 deduplication keys, with a time budget and scheduled continuation. * Change previews expire for use after one day. Their database posts become cleanup candidates after two days; the daily Pro cleanup removes at most 50 per pass. * Finished job journals and associated scan rows default to 90 days from creation, using Free's bounded cleanup. Only completed, cancelled, failed or reverted jobs with expired revert windows qualify. The default revert window is 30 days; unfinished or paused work can remain longer. * Rule recovery history keeps the latest 20 configurations per rule without a separate age-based expiry. Short-lived worksets and failed-form recovery drafts use WordPress transients. These are cleanup eligibility rules, not guaranteed deletion times. Cleanup depends on the relevant plugin and WordPress scheduled tasks running. Pro deactivation/uninstall stops its activity and preview cleanup while retaining data. Exports, site backups and browser-restored sessions are controlled separately. This build does not register a WordPress personal-data exporter or eraser for its Pro records. == Source and licensing == Readable PHP, JavaScript and CSS are included; no compilation is required. Pro uses WordPress libraries and Free's API; catalog features also use WooCommerce. No third-party runtime library is bundled. See LICENSE for GPL-2.0-or-later terms. == Changelog == = 1.1.3 = * Add explicit Pro activation, site allowance and expiry/status details using the shared CatalogFAQ licence service. * Add eligible private WordPress updates with fresh download authorization and archive validation. * Preserve published answers, earned local access during expiry/outages and all Free workflows. * Pause premium changes and resumable jobs safely after local disconnect; retain unprocessed import rows. * Unify the public 1.1.2 and local 0.2.8 release branches without changing content identifiers. = 0.2.8 = * Require a current matching preview in the native editor before publishing an enabled rule, with explicit draft and live-publication actions. * Prevent local answer input from being silently ignored and preserve failed-edit drafts. * Add read-only progress updates, recovery guidance and practical first-use tasks. * Support named product matching and SKU-based spreadsheet assignment with the separate Pro import adapter and Free 0.2.8. = 0.2.7 = * Enable store-wide defaults and advanced cross-site migration with the matching Free split. = 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. = 0.2.4 = * Set Author URI to https://plugins.shop/. = 0.2.3 = * Own bulk command validation, execution and conditional revert in the Pro add-on. * Require Free 0.2.3 or newer with core API 2; reject incompatible pairs before loading modules. * Retain existing job journals and their original revert deadlines; reactivation restores available handlers. = 0.2.2 = * Keep saved rules within a keyboard-scrollable table on small screens. * Verify picker request nonces, validate recovered form state and register translations on init. * Use native screen identity and audit lookup; explain required SQL and domain configuration. * Retain the private Update URI protection. Pro is not a WordPress.org submission package. = 0.2.1 = * Clarify private distribution, same-site APIs, authored external media and retention. = 0.2.0 = * Add resumable rule drafts, complete private scan results, reviewed bulk handoff, recent work and named selectors. * Drain expired activity through bounded scheduled continuation.