{"id":336352,"date":"2026-09-19T14:31:12","date_gmt":"2026-09-19T14:31:12","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bfp-suite\/"},"modified":"2026-09-19T15:28:55","modified_gmt":"2026-09-19T15:28:55","slug":"bsaeed-family-tree-builder","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/bsaeed-family-tree-builder\/","author":14990126,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"6.0.1","stable_tag":"6.0.1","tested":"7.1.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Bsaeed Family Tree Builder","header_author":"BigFamilyPortal","header_description":"All-in-one plugin \u2014 Family Tree + PayPal Subscriptions + Users, Dashboard, i18n, SAAS & Notifications (v6).","assets_banners_color":"18542e","last_updated":"2026-09-19 15:28:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":35,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"6.0.1":{"tag":"6.0.1","author":"bsaeed","date":"2026-09-19 15:28:55","revision":3703408}},"upgrade_notice":{"6.0.0":"<p>This version renames the plugin from &quot;BFP Suite&quot; to &quot;Bsaeed Family Tree Builder&quot; and changes its internal code prefix. If upgrading from an earlier &quot;BFP Suite&quot; install, deactivate and delete the old plugin, then install this version fresh; your family tree data is stored in its own database tables and is preserved.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3703367,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3703367,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3703367,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3703367,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["6.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3703367,"resolution":"1","location":"assets","locale":"","width":1280,"height":696},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3703367,"resolution":"2","location":"assets","locale":"","width":1280,"height":1020},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3703367,"resolution":"3","location":"assets","locale":"","width":1280,"height":696},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3703367,"resolution":"4","location":"assets","locale":"","width":1280,"height":932},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3703367,"resolution":"5","location":"assets","locale":"","width":1280,"height":932},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3703367,"resolution":"6","location":"assets","locale":"","width":1280,"height":700},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3703367,"resolution":"7","location":"assets","locale":"","width":1280,"height":932},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3703367,"resolution":"8","location":"assets","locale":"","width":1280,"height":820}},"screenshots":{"1":"Interactive family tree showing clearly organized generations, couples, and children","2":"Add or edit a family member \u2014 name, photo, parents, and partners all in one screen","3":"Find Connection \u2014 instantly see how any two family members are related","4":"Admin dashboard with membership and subscription stats at a glance","5":"Manage subscription plans and PayPal settings","6":"Simple, clean login screen for your members","7":"Customize your site's colour theme in a few clicks","8":"Fully responsive \u2014 looks great on mobile devices too"}},"plugin_section":[],"plugin_tags":[24736,24730,1932,334,4079],"plugin_category":[41,45,58],"plugin_contributors":[281586],"plugin_business_model":[],"class_list":["post-336352","plugin","type-plugin","status-publish","hentry","plugin_tags-family-tree","plugin_tags-genealogy","plugin_tags-membership","plugin_tags-paypal","plugin_tags-subscriptions","plugin_category-communication","plugin_category-ecommerce","plugin_category-user-management","plugin_contributors-bsaeed","plugin_committers-bsaeed"],"banners":{"banner":"https:\/\/ps.w.org\/bsaeed-family-tree-builder\/assets\/banner-772x250.png?rev=3703367","banner_2x":"https:\/\/ps.w.org\/bsaeed-family-tree-builder\/assets\/banner-1544x500.png?rev=3703367","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bsaeed-family-tree-builder\/assets\/icon-128x128.png?rev=3703367","icon_2x":"https:\/\/ps.w.org\/bsaeed-family-tree-builder\/assets\/icon-256x256.png?rev=3703367","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bsaeed-family-tree-builder\/assets\/screenshot-1.png?rev=3703367","caption":"Interactive family tree showing clearly organized generations, couples, and children"},{"src":"https:\/\/ps.w.org\/bsaeed-family-tree-builder\/assets\/screenshot-2.png?rev=3703367","caption":"Add or edit a family member \u2014 name, photo, parents, and partners all in one screen"},{"src":"https:\/\/ps.w.org\/bsaeed-family-tree-builder\/assets\/screenshot-3.png?rev=3703367","caption":"Find Connection \u2014 instantly see how any two family members are related"},{"src":"https:\/\/ps.w.org\/bsaeed-family-tree-builder\/assets\/screenshot-4.png?rev=3703367","caption":"Admin dashboard with membership and subscription stats at a glance"},{"src":"https:\/\/ps.w.org\/bsaeed-family-tree-builder\/assets\/screenshot-5.png?rev=3703367","caption":"Manage subscription plans and PayPal settings"},{"src":"https:\/\/ps.w.org\/bsaeed-family-tree-builder\/assets\/screenshot-6.png?rev=3703367","caption":"Simple, clean login screen for your members"},{"src":"https:\/\/ps.w.org\/bsaeed-family-tree-builder\/assets\/screenshot-7.png?rev=3703367","caption":"Customize your site's colour theme in a few clicks"},{"src":"https:\/\/ps.w.org\/bsaeed-family-tree-builder\/assets\/screenshot-8.png?rev=3703367","caption":"Fully responsive \u2014 looks great on mobile devices too"}],"raw_content":"<!--section=description-->\n<p>Bsaeed Family Tree Builder is an all-in-one WordPress plugin for building a family tree website with membership and subscription support \u2014 everything you need in one plugin, with no locked or paywalled features.<\/p>\n\n<h4>\ud83c\udf33 Family Tree Builder<\/h4>\n\n<ul>\n<li>Interactive, zoomable family tree \u2014 search by name, expand\/collapse branches, fit-to-screen and center controls<\/li>\n<li>Add photos for each family member, with automatic initials shown when no photo is set<\/li>\n<li>Couples are shown clearly grouped together, visually distinct from other relatives<\/li>\n<li>Personal photo albums for each family member<\/li>\n<li>Social media links (Facebook, Instagram, Twitter, WhatsApp, LinkedIn, YouTube) on individual profiles<\/li>\n<li>Find Connection \u2014 instantly discover and visually highlight how any two family members are related, however distant<\/li>\n<li>Support for multiple family trees on one site, each independently configurable<\/li>\n<li>Set each tree's visibility to Public, Members-Only, or Password-Protected<\/li>\n<li>Export any tree to PDF, or share it directly to Facebook, Twitter, or WhatsApp<\/li>\n<\/ul>\n\n<h4>\ud83d\udc64 User Accounts &amp; Membership<\/h4>\n\n<ul>\n<li>Flexible registration: open sign-up, email verification, or admin-approval \u2014 your choice<\/li>\n<li>Full login, logout, forgot-password, and reset-password flows built in<\/li>\n<li>Role-based access control (Member, Moderator, Administrator)<\/li>\n<li>Link a user account to their specific person in the family tree<\/li>\n<\/ul>\n\n<h4>\ud83d\udcb3 Subscriptions (Optional)<\/h4>\n\n<ul>\n<li>PayPal-powered recurring subscriptions, entirely optional \u2014 the plugin works fully without it<\/li>\n<li>Unlimited custom subscription tiers with your own pricing<\/li>\n<li>Self-service \"My Account\" page where subscribers manage their plan and billing<\/li>\n<li>Subscription status syncs automatically via PayPal webhooks<\/li>\n<\/ul>\n\n<h4>\ud83d\udcca Admin Dashboard<\/h4>\n\n<ul>\n<li>At-a-glance stats on membership and subscriptions<\/li>\n<li>Manage a site-wide list of family surnames and villages\/locations<\/li>\n<li>Custom colour theme picker \u2014 restyle the tree and member pages to match your brand in a few clicks<\/li>\n<li>Automatic page setup for login, registration, password reset, and account pages<\/li>\n<\/ul>\n\n<h4>\ud83c\udf10 Multi-language Support<\/h4>\n\n<ul>\n<li>Enable and edit translations directly from wp-admin, no separate translation plugin required<\/li>\n<li>Right-to-left (RTL) language support built in<\/li>\n<\/ul>\n\n<h4>\ud83d\udd14 Notifications<\/h4>\n\n<ul>\n<li>In-app notification bell with unread-count badge for logged-in members<\/li>\n<\/ul>\n\n<h4>\ud83d\udcf1 Built for Every Device<\/h4>\n\n<ul>\n<li>Fully responsive design \u2014 the tree, forms, and admin pages all work smoothly on phones and tablets<\/li>\n<\/ul>\n\n<p>Every feature listed above is fully available to all users; this plugin does not lock or limit its own built-in functionality behind a subscription tier.<\/p>\n\n<h4>Shortcodes<\/h4>\n\n<ul>\n<li><code>[bsaeed_family_tree_canvas tree_id=\"1\"]<\/code> \u2014 render the family tree canvas<\/li>\n<li><code>[bsaeed_subscribe plan=\"basic\" price=\"$9\/mo\" description=\"...\"]<\/code> \u2014 plan card with a Subscribe button<\/li>\n<li><code>[bsaeed_my_account]<\/code> \u2014 subscriber dashboard (plan, status, next billing, cancel)<\/li>\n<li><code>[bsaeed_register]<\/code> \u2014 registration form<\/li>\n<li><code>[bsaeed_login]<\/code> \u2014 login form<\/li>\n<li><code>[bsaeed_forgot]<\/code> \u2014 forgot-password form<\/li>\n<li><code>[bsaeed_reset]<\/code> \u2014 password-reset form (linked from email)<\/li>\n<li><code>[bsaeed_person_album person_id=\"5\" tree_id=\"1\"]<\/code> \u2014 photo album for a person<\/li>\n<li><code>[bsaeed_notifications]<\/code> \u2014 bell icon with notification dropdown for logged-in users<\/li>\n<li><code>[bsaeed_lang_switcher]<\/code> \u2014 language switcher<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to PayPal to process subscription payments. It is only used if you configure PayPal billing under <strong>Bsaeed Family Tree Builder \u2192 SAAS Plans<\/strong>; the family tree and user-account features work without it.<\/p>\n\n<p>What is sent and when:<\/p>\n\n<ul>\n<li>When you configure a plan, the plugin requests an OAuth access token from PayPal using the Client ID and Secret you provide.<\/li>\n<li>When a visitor subscribes, the plugin creates a PayPal billing subscription and sends the selected plan ID.<\/li>\n<li>PayPal sends subscription status updates (activated, renewed, cancelled, etc.) to this plugin's webhook endpoint, which the plugin verifies and stores against the relevant user account.<\/li>\n<li>No family tree data, member details, or photos are sent to PayPal \u2014 only subscription\/billing information (plan ID, subscription ID, and billing status).<\/li>\n<\/ul>\n\n<p>This service is provided by PayPal: <a href=\"https:\/\/www.paypal.com\/us\/legalhub\/paypal\/useragreement-full\">Terms of Service<\/a> and <a href=\"https:\/\/www.paypal.com\/us\/legalhub\/paypal\/privacy-full\">Privacy Policy<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>bsaeed-family-tree-builder<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Bsaeed Family Tree Builder<\/strong> in the admin menu to configure PayPal settings and subscription plans (optional \u2014 only needed if you plan to charge for access).<\/li>\n<li>Place the shortcodes above on the relevant pages (e.g. a page with slug <code>my-subscription<\/code> for <code>[bsaeed_my_account]<\/code>), or use <strong>Bsaeed Family Tree Builder \u2192 Pages<\/strong> to have these pages created for you automatically.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20require%20paypal%3F\"><h3>Does this require PayPal?<\/h3><\/dt>\n<dd><p>No. PayPal is only used if you choose to set up paid subscription billing. The family tree and user-account features work fully without it.<\/p><\/dd>\n<dt id=\"where%20do%20i%20configure%20subscription%20plans%3F\"><h3>Where do I configure subscription plans?<\/h3><\/dt>\n<dd><p>Under <strong>Bsaeed Family Tree Builder \u2192 SAAS Plans<\/strong> in wp-admin.<\/p><\/dd>\n<dt id=\"does%20the%20free%20version%20limit%20how%20many%20family%20members%2C%20trees%2C%20or%20albums%20i%20can%20create%3F\"><h3>Does the free version limit how many family members, trees, or albums I can create?<\/h3><\/dt>\n<dd><p>No. Every feature is fully available regardless of subscription status.<\/p><\/dd>\n<dt id=\"can%20i%20keep%20my%20family%20tree%20private%2C%20or%20only%20share%20it%20with%20certain%20people%3F\"><h3>Can I keep my family tree private, or only share it with certain people?<\/h3><\/dt>\n<dd><p>Yes. Each tree can be set to Public, Members-Only, or Password-Protected under Tree Settings.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20family%20members%20to%20the%20tree%3F\"><h3>How do I add family members to the tree?<\/h3><\/dt>\n<dd><p>From wp-admin, go to Bsaeed Family Tree Builder \u2192 Family Tree \u2192 Add Member. You can set their name, photo, parents, and partners all from one screen.<\/p><\/dd>\n<dt id=\"can%20i%20find%20out%20how%20two%20people%20in%20the%20tree%20are%20related%3F\"><h3>Can I find out how two people in the tree are related?<\/h3><\/dt>\n<dd><p>Yes \u2014 the Find Connection tool lets you pick any two family members and shows the exact relationship path between them, highlighted directly on the tree.<\/p><\/dd>\n<dt id=\"can%20members%20add%20their%20own%20photos%3F\"><h3>Can members add their own photos?<\/h3><\/dt>\n<dd><p>Yes, each family member can have a photo album that logged-in members with edit access can upload to.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20support%20languages%20other%20than%20english%3F\"><h3>Does this plugin support languages other than English?<\/h3><\/dt>\n<dd><p>Yes. You can enable additional languages and edit translations directly from wp-admin \u2014 no separate translation plugin needed.<\/p><\/dd>\n<dt id=\"can%20i%20control%20how%20new%20users%20sign%20up%3F\"><h3>Can I control how new users sign up?<\/h3><\/dt>\n<dd><p>Yes \u2014 choose between open registration, email verification, or requiring admin approval for every new member.<\/p><\/dd>\n<dt id=\"will%20the%20family%20tree%20look%20good%20on%20mobile%3F\"><h3>Will the family tree look good on mobile?<\/h3><\/dt>\n<dd><p>Yes, the tree canvas and all front-end pages are fully responsive.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20subscriber%20cancels%20their%20paypal%20subscription%3F\"><h3>What happens if a subscriber cancels their PayPal subscription?<\/h3><\/dt>\n<dd><p>Their status updates automatically via PayPal's webhook notifications \u2014 no manual action needed on your part.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20colours%20to%20match%20my%20site%27s%20branding%3F\"><h3>Can I change the colours to match my site's branding?<\/h3><\/dt>\n<dd><p>Yes, under Colour Theme in wp-admin \u2014 changes apply immediately across the tree and member-facing pages.<\/p><\/dd>\n<dt id=\"can%20i%20run%20more%20than%20one%20family%20tree%20on%20the%20same%20site%3F\"><h3>Can I run more than one family tree on the same site?<\/h3><\/dt>\n<dd><p>Yes, the plugin supports multiple trees, each with its own visibility settings and members.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>6.0.1<\/h4>\n\n<ul>\n<li>Security: closed a gap where a crafted link could display a fake \"user approved\/rejected\" confirmation on the Users page; the flash message now requires a valid nonce tied to the real action.<\/li>\n<li>Security: sanitized the raw PayPal webhook payload before it is logged, even when signature verification fails.<\/li>\n<li>Security: hardened several password-type fields against being submitted as an array instead of a string.<\/li>\n<li>Security: fixed two DOM XSS issues where autocomplete results and notification content were inserted into the page without HTML-escaping.<\/li>\n<li>Security: removed a one-time legacy-data backfill query from two public, unauthenticated endpoints (it now runs once, correctly, at plugin activation instead) \u2014 this was reachable by anyone and could modify tree data site-wide.<\/li>\n<li>Audited every input-handling code path (AJAX handlers, form processors, admin pages) and every direct SQL query in the plugin for proper nonce\/permission checks, sanitization, output escaping, and prepared statements.<\/li>\n<\/ul>\n\n<h4>6.0.0<\/h4>\n\n<ul>\n<li>Renamed from \"BFP Suite\" to \"Bsaeed Family Tree Builder\" for a clearer, more distinctive plugin name.<\/li>\n<li>Fixed a subscription-hijacking risk: PayPal subscriptions are now bound to the initiating user via PayPal's custom_id field, and verified on return before being associated with any account.<\/li>\n<li>Fixed private\/password-protected trees being searchable and readable via two endpoints that did not check tree visibility.<\/li>\n<li>Added nonce verification to the language-switcher parameter, which previously updated user preferences via GET with no CSRF protection.<\/li>\n<li>Removed all subscription-tier limits on members, trees, and albums, and removed plan-based ad suppression \u2014 every feature is now fully available to all users.<\/li>\n<li>Replaced direct authentication-cookie parsing with WordPress's session-token API for internal session handling.<\/li>\n<li>Sanitized the PayPal webhook payload before storage.<\/li>\n<li>Converted all inline <code>&lt;style&gt;<\/code>\/<code>&lt;script&gt;<\/code> output to properly registered\/enqueued assets.<\/li>\n<li>Updated bundled jsPDF (to 4.2.1) and GLightbox (to 3.3.1) libraries.<\/li>\n<li>Family Tree, PayPal Subscriptions, Users, Dashboard, i18n, SaaS &amp; Notifications combined into a single suite.<\/li>\n<\/ul>","raw_excerpt":"All-in-one plugin: interactive family tree builder, PayPal subscriptions, user accounts, dashboard, i18n, and notifications.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/336352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=336352"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bsaeed"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=336352"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=336352"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=336352"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=336352"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=336352"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=336352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}