DOCS

My Fundations

My Fundations is the account-page block where a logged-in fundraiser sees every page they have created and manages it without ever touching wp-admin. In 2.9.0 it was rebuilt from a grid of cards into a compact list that mirrors the admin Campaigns screen, and it gained sub-pages for group assignment, members, and invitations. A companion My Teams tab covers the teams a user owns. This is a free feature.

My fundations list

Why use this

Someone who runs several fundraising pages needs one place to see them all: status, goal, raised so far, and the actions they can take on each. The old card layout took a lot of vertical space and only offered an edit button. The new list shows more pages at a glance and puts editing, group assignment, member views, and invitations one click away, so fundraisers rarely need a WordPress admin account at all.

What it does

The block queries every get_fund_action the current user created. It matches on the _get_fund_creator_id meta first and falls back to post_author for older records. Guests see nothing: the block renders only for logged-in users.

Each row shows:

  • The page title.
  • A status pill (active, pending, completed, cancelled, or closed).
  • Goal and raised amount, formatted with get_fund_money() so they follow your currency settings.
  • A slim progress bar.
  • Right-aligned action buttons.

When the user has no pages, the block shows an empty state pointing them to the wizard.

The block is a router

Rather than create new WordPress pages, the block reads two query parameters and renders a sub-page in place:

  • ?gf_view= is one of group, members, or manage.
  • ?gf_fund= is the page being acted on.

When the current user owns that page, the block swaps the list for the matching sub-page and shows a Back link. The buttons are plain links built from add_query_arg(), carrying gf_tab=my-fundations so the account tabs re-activate the right tab after navigation. No rewrite rules, no extra pages.

Per-row actions

ButtonShown whenWhat it does
EditThe user owns the pageOpens the frontend edit form at ?edit_fund=.
Group assignmentThe user owns the pageOpens the group sub-page to move the page between a campaign, team, or event.
MembersThe page is a campaignShows the campaign’s fundraisers using the get-fund/campaign-members block.
Manage / inviteThe page is a campaign and Pro can manage itOpens the Pro Manage Members panel for inviting and removing people.

A page counts as a campaign when it carries the _get_fund_is_campaign flag or already has a child joined through _get_fund_campaign_id.

The Members and Manage sub-pages reuse existing blocks rather than duplicating logic. Members renders the free get-fund/campaign-members block; Manage renders the Pro get-fund/manage-members block. The free plugin stays decoupled: if Pro is not active, the Manage button does not appear, and Pro localises its own script and nonce when its block renders.

Group assignment from the front end

The group sub-page is the first place a fundraiser can change which campaign, team, or event a page belongs to without an admin account. Previously this was an admin meta box only. The self-posting form and its handler live in the block and run on init, the same pattern the frontend edit form uses.

The handler is guarded carefully:

  • Nonce get_fund_group_assignment_.
  • Ownership through user_owns_action() (author, or _get_fund_creator_id, or the edit_others_posts capability, plus the get_fund_user_can_edit_action filter).
  • The target must be an allowed campaign type, filtered by get_fund_campaign_post_types.
  • A page cannot join itself.
  • A campaign that has children disabled (_get_fund_children_disabled) rejects non-admin joiners and returns gf_group_error=children_disabled.
  • Event inheritance is enforced on the server: if the chosen campaign already has an event, that event wins and the page’s own event choice is dropped, subject to the get_fund_event_creation gate.

On success the handler redirects back with gf_group_updated=1 and fires do_action( 'get_fund_group_assignment_updated', $post_id ). A small script keeps the event field locked when the selected campaign forces an event.

My Teams

The same block runs in a second mode for teams. The account-tabs block automatically appends a My Teams tab right after My Fundations, but only when the current user actually owns a team, so existing account pages get the tab with no editing. In teams mode the block lists the teams the user created or authored and returns nothing when there are none.

The router is mode-aware. In teams mode it handles ?gf_view=manage&gf_team= and opens the Pro Manage Members panel scoped to that team. The team sub-pages link back to gf_tab=my-teams. The Manage button on a team appears only when Pro can manage members.

How to add it to your account page

The block normally lives on the auto-created Account page already. To place it by hand:

  1. Open the Account page in the block editor.
  2. Add the My Fundations block from the Fundations category.
  3. Adjust the settings in the sidebar.
  4. Update the page.

If the Account page is missing, regenerate it from Fundations > Settings > Setup.

The My Teams tab is added by the account-tabs block on render, so you do not place a separate teams block.

My fundations subpage members

Block settings

SettingAttributeTypeDefaultDescription
Per pageperPageinteger20How many pages to list.
Show progress barshowProgressBarbooleantrueShow the progress bar on each row.
Show days remainingshowDaysRemainingbooleantrueShow a countdown on rows with an end date.
Show edit buttonshowEditButtonbooleantrueShow the Edit button.
Empty state messageemptyStateMessagestring(built-in)Message shown when the user has no pages.
Accent coloraccentColorhex#228b22Row accent, set as the --gf-card-accent custom property.
Modemodestringfundationsfundations or teams. The teams tab sets this for you.

What you can and cannot do

You can set how many pages list per page, hide the progress bar or countdown, set a custom empty-state message, and recolor the accent. You can let fundraisers move a page between groups and, with Pro, invite and remove members, all from the account page.

You cannot show another user’s pages: the block is always scoped to the logged-in user. It renders nothing for guests, so it is not an archive. The Manage / invite sub-page needs an active Pro license; without it the button is hidden.

Troubleshooting

Nothing shows for a user who has pages. The block matches _get_fund_creator_id first and falls back to post_author. If the pages were made as a guest and later claimed, confirm the claim finished and updated both the meta and the author.

A sub-page shows the list instead. Sub-pages render only when the user owns the page and, for Members and Manage, when the page is a campaign. Check ownership and the _get_fund_is_campaign flag.

The Manage / invite button is missing. It appears only when Pro is active and licensed and the current user is allowed to manage that container. With the free plugin alone it is hidden by design.

Group change is rejected with children_disabled. The target campaign has children disabled. Only an administrator can attach a page to it.

Accent color has no effect. It is applied through --gf-card-accent. A theme rule with higher specificity will win. Add a more specific rule under Appearance > Additional CSS.

Developer reference

The block does not register its own actions or filters, but it participates in the wider Fundations hook API.

HookTypeNotes
get_fund_group_assignment_updatedactionFires after a page is reassigned from the group sub-page. Receives the post ID.
get_fund_user_can_edit_actionfilterFinal say on whether the current user may edit or reassign a page.
get_fund_campaign_post_typesfilterWhich post types count as campaign targets.
get_fund_event_creationoptionGates whether a fundraiser may set an event during reassignment.

The list, router, and group-assignment handler live in includes/class-get-fund-my-fundations-block.php. The event-lock script is public/js/get-fund-my-fundations.js, enqueued only where the block is present. Styles use the .gf-mf-* prefix in public/scss/blocks/_my-fundations.scss.