Reduce cached object size and fix missing organisation cache invalidation [*]
Improvements
post_content, post_excerpt, guid, comment metadata, and others) from team, organisation, profile, and venture objects before they are serialized into transientsSIA_Organization::__bust_cache() to after the licensee cascade loop, so the reads inside that loop get cache hits instead of triggering fresh DB queriesFixes
SIA_Organization::__bust_cache() to bust team and profile transients unconditionally, not only when the organisation is a licenseeSIA_Organization::__bust_cache() now uses bust_transient_variants_in_all_blogs() for get_blog_profiles, so all blogs’ profile transient variants are cleared when an org changes, not only the currently active blog’s transientFix confusing display in enumerate_community_roles() when role value is empty
Fixes
$value in enumerate_community_roles() — return early with '' for non-admin users when no community role is set, preventing a fatal error downstreamHide community role field when no choices are available
Fixes
prepare_field() to return false and skip rendering entirely when get_choices() returns an empty array, suppressing both the field and its labelvalidate_value() when get_choices() is empty, preventing a required-field error for users who cannot see any role optionsFix fatal error when syncing user with a deleted profile post
$profilePost when get_post( $profile_post_id ) returns null (stale ACF meta pointing to a deleted post) in SIA_Profiles_Admin::sync_user_with_profile()Include the Team organizations in the response to Net/CRM
New
SIA_Team::$exportables with a single value: ‘hosts’Remove service before sending to Website Reports
SIA_Profiles_Admin::update_pipeline_status()Service access credentials Organization and Profile properties and Slack invite Profile property
Organizations and profiles now store their default access credentials for 3 services: SIA Play, Google Workspace, and Slack. By default they are turned off, but depending on the organization vertical and licensing pipeline status they are gradually turned on.
Besides the invite sent flag, now a Profile also stores the invite type, which is a collation of services it has access to.
New
$accessCredentials property and associated get_defaultAccessCredentials() methods to SIA_Organization and SIA_Profile, storing default access for 3 services: ‘slack’, ‘google-workspace’, and ‘play’SIA_Profile::$inviteType property that collates the access found via the default access credentials and is used verbatim by the Ariel SIA_Team_Member entityfield_6929b112d195c) for ‘profile’ in the SIA_Profiles_Public::FIELD_IDS constant SIA_Profile::$importables to use as a flag for the corner cases where by default there’s access, but it’s been denied by the profile creator, used by SIA_Team_Member when formatting the email inviteSIA_Profile::$organizationPipelineStatus property and associated get_organizationPipelineStatus() method used in the Profiles admin table Improvements
SIA_Profiles_Admin::display_custom_post_columns()Fixes
SIA_Team::$importables in order to keep in sync with the Net/CRMis_licensee with a pipeline_status set check before switching to Play during the instantiation in SIA_Organization::__construct()Track profile’s invite sent status via meta
If a profile was created before 17.10.2025, the invite is considered sent.
New
$inviteSent) and a method (SIA_Profile::get_inviteSent()) to track if an invite for a profile was sentOn the margins improvements to team data
New
SIA_Profiles_ISOdescription as an $exportable to SIA_Organizationhosts in the tracked teams (legacy team reference) FIELD_IDSImprovements
SIA_Profile::set_profile_role_constants to the earlier registerPost Profile updates to the Airtable Net/CRM
New
SIA_Profile:$exportables: names, phone, thumb, bio, occupation, organizations, teams, active, inactive, community role$organizations as array in SIA_Profile to wrap the $organization as is$active as bool in SIA_Profile to load the value of the active meta fieldNETCRM_Entity Trait in SIA_ProfileImprovements
$phoneNumber in SIA_Profile, also sent to Net/CRMAllow bypassing of licensing status in organization query filter
In order to run CLI commands on all organizations, re-use the ‘bypass_organization_licensing_status_filter’ approach used for teams.
New
WP_Query has a ‘bypass_organization_licensing_status_filter’ set before altering the query in SIA_Profiles_Public::filter_organizations_status()Start posting entity updates to the Airtable NET/CRM
As a prototype, start with posting organization fieldss that are present in the Net/CRM base (description, website URL, and name). Use the provided trait from SIA Ariel and provide an entity type and exportables.
New
$exportables of SIA_Organization to description, websiteURL, and thumbnailURLNETCRM_Entity trait in SIA_Organization, SIA_Profile, SIA_TeamENTITY_TYPE to SIA_Organization, SIA_Profile, SIA_Team that uses the singular and Fixes
SIA_Profiles_Admin::update_pipeline_status()Improve Profile validations by refining dependent field filtering
New
SIA_Profiles_Admin::filter_profile_fields() to hide or make required profile fields depending on is_play()auto-draft post status condition for showing the Email fieldAdd a unique, post id based, URL to Venture
Used by the Community Voting component to prevent permalink ‘blog/‘ mix-ups.
Improvements
SIA_Venture::$uniqueUrl using home_url()Remove the Profile email outside of Play and allow Board members as Local team
Improvements
SIA_Ariel::is_play() in SIA_Profiles_Admin::filter_profile_fields()Fixes
$strict case of SIA_Team::get_teamMember_by_role() in order to board member profiles also together with their team Adjust Profile view and assign board role permissions
To allow board members on International.
Improvements
current_user_can_assign_role() and current_user_can_view_role_option() to allow COMMUNITY_ROLE_ADVISORY_BOARD_MEMBER in is_international_team_blog(), and both roles in current_user_can_assign_role()Allow Profile and Team creation via CRUD API
Add importables to Team, enricht importables in Profile
New
name to SIA_Team::$importablesSIA_Profile::$importables with names, email, active and professional detailsza) for new scaling lead and Zambia (zm) for older lead to SIA_Profiles_ISO::$mappingFixes
SIA_Profiles_Admin::display_custom_post_columns()Replicate exportables and airtable_uuid in Profile
Fix start year, replicate exportables in Team
Leaner CRUD Organizations with defined Airtable uuids for implementation partners
Starting 2025, we’re deprecating manual evaluation of start year.
New
website_url, start_year, end_yearSIA_Organization::$airtable_uuidstart_year via a new method SIA_Organization::start_year() when the value is set, use it. Otherwise return the Year of the publishing date.Implement the CRUD trait in Play post type extensions
New
POST_TYPE_MACHINE_NAME defined as the SIA_Profiles_Public equivaletuse CRUD_Entity in SIA_Organization, SIA_Profile, and SIA_Team to callback Ariel REST CRUD endpoints$importables for the same classes for update operations from the same traitImprovements
SIA_Profile::__construct() attempting a second check for a loaded postRemove headshot and socials for candidate profiles
New
$is_candidate) in SIA_Profile::__construct()Fixes
SIA_Profiles_Public::get_site_profiles() using the uasort on SIA_Profiles::sortProfilesByFirstName()Get SIAYC and Steering Board profiles from the entire network
When looking for site profiles, use the blog profile methods to provide an output, optionally with a community role. As a bonus, prepare for distributed Youth Council and Steering Board profiles.
New
SIA_Profile::$is_candidate) or a council member (SIA_Profile::$is_council_member) and adjust the displaySIA_Profiles_Public::get_site_profiles()SIA_Profile::__bust_cache()SIA_Profiles::sortProfilesByFirstName() SIA_ACF_field_CommunityRole::validate_value()current_user_can_view_role_option() and current_user_can_assign_role()COMMUNITY_ROLE_STEERING_BOARD_MEMBER) against a Youth Council Member (COMMUNITY_ROLE_YOUTH_COUNCIL_MEMBER) selection on team websites from SIA_ACF_field_CommunityRole::validate_value()Improvements
SIA_ACF_field_TeamMemberRole::get_choices() used by the LocalTeam and BoardMember blocks respectivelySIA_ACF_field_TeamMemberRole and SIA_ACF_field_CommunityRole by deferring the call to get_choices() to render_field()SIA_Profiles_Public::get_community_roles_profile_post_ids() into SIA_Profiles_Public::get_blog_community_roles_profile_post_ids() for clarityIntroduce the Advisory Board Member option for a Community Role
New
COMMUNITY_ROLE_STEERING_BOARD_MEMBER necessary for showing Profile collection in SIA_Profile::set_profile_role_constants()SIA_Profile::get_board_member_roles_post_IDs()manage_board_members permission that’s currently mapped to manage_sites in SIA_Team_Member::can() in current_user_can_assign_role()Introduce the Youth Council options for a Community Role
New
COMMUNITY_ROLE_YOUTH_COUNCIL_MEMBER and COMMUNITY_ROLE_YOUTH_COUNCIL_CANDIDATE necessary for showing Profile collection used during the elections and after in SIA_Profile::set_profile_role_constants()SIA_Profile::get_youth_council_roles_post_IDs()current_user_can_view_role_option()current_user_can_assign_role(), first by hiding them, second by checking for the manage_board_members permission that’s currently mapped to manage_sites in SIA_Team_Member::can()SIA_ACF_field_CommunityRole::validate_value()New video embed fields for a Profile video introduction
Using the newly added Deployment fields in the Profile Details group, store video embed details in Profile instances.
$videoId, $videoUrl, and $videoEmbedUrl) to load video introductions for Profile in SIA_Profile::__construct() Add Brazil to the ISO repository
br for Bulgaria to SIA_Profiles_ISO::$mappingpt ISO language code mapped to br to SIA_Profiles_ISO::$ISO639LanguageCodeProvide the imported venture Grow node id from Venture objects
SIA_Venture::$growVentureNid property to be sent to reports and load it from post meta via SIA_Venture::get_grow_venture_nid()Add Bulgaria to the ISO repository
bg for Bulgaria to SIA_Profiles_ISO::$mappingbg ISO language code mapped to bg to SIA_Profiles_ISO::$ISO639LanguageCodeImprove the social network domain processors
Add ISO 639 language code mapping to repository
A use case is sending localized data to the A&AP which uses the ISO639 standard where ‘rs’ is ‘sr’ and ‘me’ is ‘sh’.
SIA_Profiles_ISO::$ISO639LanguageCode class constant mapping country ISO2 to language ISO639 according to the status quo (ch is empty, ug has none)SIA_Profiles_ISO::get_ISO639_language_code() that takes a country ISO2 as a parameter and returns the language mappingCreate an arbitrary debugging switch POC
Add a last FALSE parameter to any function to use in debugging functions that are called multiple times and use static and transients.
When the arbitrary switch parameter is truthy, use it to dump values.
$arbitrarySwitch boolean parameter to SIA_Profiles_Public::get_team_members() and dump values when it’s TRUETRUE in SIA_ACF_field_TeamMember::get_choices() when calling the above function inside the block to see returns.Add Mexico to the ISO repository
mx for Mexico to SIA_Profiles_ISO::$mappingExclude international partnership on licensee blogs
TRUE for PARTNERSHIP_TYPE_INTERNATIONAL_FUNDING on a team blog (excluding HQ) in current_user_can_assign_partnership_type()Fix exclusive partnerships type on international and microsite
Given that microsites and HQ share international funding partnership type, the helper doesn’t show the type on international, because for the type it would stop by checking if it’s a microsite.
current_user_can_assign_partnership_type() bailing out when 2 blog types use the same partnership type by checking for both blog type and partnership type at onceNew Partners grouping and selection for microsites
SIA_Organization::get_international_microsite_partnership_types() to filter out partnership types on microsites like the summit or retreatcurrent_user_can_assign_partnership_type() checking for the combo of SIA_Ariel::is_microsite() and the above group of Glossary termsFix inconsistent order of de-duped roles of alumni
get_participant_glossary_post_IDs() by reversing the array_intersect parameters order in SIA_Profile::dedupe_participant_roles()De-dupe overlapping roles of alumni
When a profile belongs to an alum, stop showing all roles, and only display the “highest” for visitors. For admin still enumerate all roles.
COMMUNITY_ROLE_PARTICIPANT)SIA_Profile::get_participant_glossary_post_IDs() to list, in order, participant and alumni rolesSIA_Profile::dedupe_participant_roles() to filter duplicate participant roles using the new get_participant_glossary_post_IDs()is_admin()) include the participant deduper in SIA_Profile::enumerate_community_roles()SIA_Profiles_Admin::bust_transients()) called only in Play by moving the hook save_post outside the is_playbook() switch in SIA_Profiles::define_admin_hooks()Speed up searches for Teams or Profiles
Store queries using the Transient Service API by integrating the new Transient Service with Team, Organization, and Profile.
SIA_Profiles_Public::get_blog_profiles() to stores local profiles in a transient together with an index mapping them to community roles, ventures, and organizationsSIA_Profiles_Public::get_team_members()SIA_Profiles_Public::get_support_role_profile_post_ids() and SIA_Profiles_Public::get_community_roles_profile_post_ids() to return profiles using the aboveSIA_Profile::is_inactive()SIA_Profiles_AdminSIA_Organization::get_licensees()get_members_query() for both Team and Organization$teams variable with the teams() method in SIA ProfileSIA_Team::is_headquarter() by using SIA_Ariel::is_international_team_blog()$AAP variable with the AAP() methdo in SIA TeamSIA_Team::__bust_cache() that propagates to Sitemap and empties team members, website team, website maintainer, and teamsSIA_Team::get_teams() and store the output in a site (network) transientSIA_Team::get_team_by_blog_id() and SIA_Team::get_team_by_slug() methodsSIA_Organization::__bust_cache() method which propagates to Team, Profile, and SitemapSIA_Profile::__bust_cache() method which also empties team members and blog profiles transientsSIA_Profile::set_profile_role_constants()SIA_Profile::get_support_roles_glossary_post_IDs() to return the Glossary terms post IDsinitialize() methods for Internal Website, Organization Status, Team, Team Member, and Wordpress PropertiesSIA_Profiles_Public::filter_team_status() and SIA_Profiles_Public::filter_profile_status() outside the main queryFix profiles admin display and improve partnership type groups evaluation
current_user_can_assign_partnership_type() the same groups returned from the SIA_Organization static methods (e.g. get_international_partnership_types())SIA_Profile::is_board_member() by replacing array_diff() with array_intersect()SIA_Profiles_Admin::manage_profile_posts_columns()Add partnership tiers to organizations when a blog option is enabled
When the “Use partnership levels” is set in Implementation, show a 3 level, localizable, field when editing an organiations.
partership_tier) that provides 3 levels and, when localized via a Localizer (localizer) field, displays the custom labels, followed by the original level in admin, and is a single value. partnership_type) to ensure that all partners are either financial or non-financial partners outside of Play (doesn’t use types)SIA_Organization) to identify if it’s a partner ($is_partner) and what type of partner ($is_financialPartner matched against the new get_financial_partnership_types() or $is_nonFinancialPartner with get_non_financial_partnership_types())$partnershipTier) in organization objects when available as a stringPrevent accidental removal of board member community roles
SIA_ACF_field_CommunityRole::get_choices() leading to removal of value by showing them to the current user if they hold them in current_user_can_view_role_option()current_user_can_view_role_option()functions.php::current_user_is_editing_own_profile() helper to allow the above checkSIA_Profile::community_role in SIA_Profile::dedupe_SIA_team_member_roles() and including a search for board member role post ids while on Play in enumerate_community_roles()Fix organization status ACF field validation and settings
SIA_ACF_field_OrganizationStatus::validate_value()SIA_ACF_field_OrganizationStatus::render_field_settings() and don’t try to validate a multiple value fieldblog_id handling SIA_Team::get_websites()Design a process for suspending an organization
Allow for licensee organizations to be put on hold by Host Support for the ongoing program year. When the organization is marked as “Suspended”, the transitioning process is also triggered automatically.
When an organziation is suspended it is also considered inactive, but it does show in the Country as “Suspended”. At the same time, the Country becomes itself “inactive”, is shown as “suspended”, and is not included in the programmatic IT services (e.g. Community Voting or Grow).
As long as a Host is suspended, it is still included in the Coutry’s organizations and shown in Play.
bool SIA_Organization::is_suspended property with the value coming from the “Is suspended” fieldFALSE is_suspended when returning the is_active property from SIA_Organization::is_active()SIA_Profiles_Admin::display_custom_post_columns()SIA_Profiles_Admin::update_pipeline_status()update_pipeline_status()TEAMS_STATUS_SUSPENDED with value -1 from SIA_Team::set_team_status_constants() and label “Suspended” from SIA_Team::get_status_labels()SIA_Team::get_organizations() and SIA_Team::get_host_organizations()is_suspended field in the SIA_Profiles::FIELD_IDS['organization] constant which leads to its key being hooked to both acf/prepare_field and acf/validate_field in the Play hooks from SIA_Profiles::define_admin_hooks()is_suspended field when validating a licensee status in SIA_Profiles_Admin::validate_organization_license_management_field() to ensure its licensee is a host and the editor has the permissions to update the organizationSIA_Team::startYear) and end year (SIA_Team::endYear)SIA_Team::was_active_in() with a year as a parameter Provide a Team’s representative team member
When the organization is active, return the Coordinator for Hosts and the Organizational lead for Candidates.
SIA_Team::get_representative_team_member() COMMUNITY_ROLE_FUNDRAISER to constants in SIA_Profile::set_profile_role_constants() and allow it for the ‘manage_implementation_partners’ permission in current_user_can_assign_role() SIA_ACF_field_TeamMember::get_choices() from initialize() and only call it on renderDisplay definitions of Glossary ACF fields
$glossaryTerm['definition'] for choices of fields that are determined from Glossary fields: SIA_ACF_field_CommunityRole::get_choices(), SIA_ACF_field_PartnershipType::get_choices(), SIA_ACF_field_TeamMemberRole::get_choices() Display a licensee’s transition and tighten editing
Ensure that licensees’ statuses only move upwards and that only relevant roles can update the licensing status. Once a licensee changes status, automatically set them to either on-boarding or off-boarding and later allow only their manager role to “uncheck” the transitioning status.
Validate every value against the current team member’s capabilities and logical progressions.
Improve marketing website organization admin table to show a partner’s roles.
SIA_Organization->vertical to allow for both Implementation and PartnershipSIA_Profiles_Public::FIELD_IDS['organization'] and then checking for incompatible combinationsProvide a Team property showing if its website is restricted
SIA_Team::$websiteIsRestricted property checking if the ‘blog_public’ option is set to ‘2’, the value used by Restricted Site AccessProvide slugs for organization statuses
SIA_Organization::get_organization_status_slugs() that returns an array of lowercase slugs for numeric licensesFix incorrect community role assignments or overwrites
current_user_is_editing_profile() to find out if the current user is updating a profile either in the admin or in the front-end formscurrent_user_can_assign_role() to limit by blog and permissionsprofile post (using the above) and they cannot assign the rolecurrent_user_can_view_role() to limit by blog and permissionsNew ISOs in repository for Lebanon and Poland
lb and pl to SIA_Profiles_ISO::$mappingFix profile editing and account requests
sia_venture) and “not recognized field type” when the global $post didn’t provide a field type in SIA_Profiles_Admin::filter_profile_fields(), and check for the ‘parent’ key in the $field array to match the new SIA_Profiles_Public::FIELD_GROUP_IDS['profile_details'] constantSIA_Profiles_Public::filter_organizations_status()) only targets admin in order to fix the Team’s hosts auto-suggesthidden field in SIA_GF_field_Organization::get_field_input() when there’s only one possible choiceblog_id (not the ACF array output) is stored in its corresponding property from SIA_Team::get_websites()Store some team and profile query outputs in transients
SIA_Team::get_teams() into a transientSIA_Profiles_Public::get_team_members() into a transientSIA_Profiles_Admin::bust_transients() hooked to save_post in SIA_Profiles::define_admin_hooks()SIA_Profiles_Public::get_websites() to optimized SIA_Ariel::get_websites(), and SIA_Profiles_Public::get_blog_ids() to optimized SIA_Ariel::get_blog_ids()Allow board members is Team member ACF type and fix Stencil options
Fixes
SIA_ACF_field_TeamMemberRole::get_choicesacf.js on ACF options pagesProvide SIA ACF fields for Profile, Venture, and Team Member
And: adapt to ACF validation of title element
New
SIA_ACF_field_Venture) extending acf_field_post_object but loading, via AJAX, profiles from across the network and has its own JS definition (sia_profile) using acf.models.SelectField.extend in acf.jsSIA_ACF_field_Profile) extending acf_field_post_object but validating community role and venture correlation and has its own JS definition (sia_profile) using acf.models.SelectField.extend in acf.jsSIA_ACF_field_TeamMember) extending acf_field_select but loading all team members from Play and using its own JS definition (team_member) using acf.Field.extend in acf.jsacf.js fixes the new ACF validation that requires the title element to not be empty by updating it as profile name fields are changed and registers the above fieldsFixes
current_user_can_assign_role()SIA_Profile static variable name when the $grouped parameter is set in SIA_Profiles_Public::get_team_members()Stop allowing board community roles on HQ
Fixes
is_international_team_blog() exceptino for get_board_member_roles_post_IDs() from current_user_can_view_role_option()Improve entities rendering between websites
More properties and methods that bypass the need to call functions based on post ID which would fail when rendering e.g. a Venture on a different website.
Provide licensed organizations via new Organization static method
New
SIA_Organization::get_licensees() static method to fetch organizations from Play;SIA_Organization::get_countries().Fixes
teams (a.k.a. Countries) featured image as ‘Country Flag’ in SIA_Profiles_Post_Types_Repository::get_post_types() given that it’s automatically found via the ISO2. Filter inactive profiles on all websites
Improvements
current_user_can( 'do anything' ) when filtering profiles via SIA_Profiles_Public::filter_profile_status() hooked to pre_get_posts (now used everywhere);Fixes
SIA_Profiles_Public::is_playbook() switch in SIA_Profiles::define_public_hooks();SIA_Team::get_teamMember_by_role() by using profile ids as output array keys (like get_members()).Provide separate results for Volunteers and Team members (which Volunteers are)
New
SIA_Profile::dedupe_SIA_team_member_roles() to highlight “specific” roles, which are all but “Team member”;SIA_Team::get_teamMember_by_role() to search for multiple roles and improve display of team member roles when strictly searching for roles that are not the default “Team member”, which all team members search and would return every team member and not allow for separation (Volunteers separate to Team members);socialProfiles property (social_links ACF field) in SIA_Organization::get_social_profile_links() and SIA_Profile::get_social_profile_links() for easier Twig processing;manage_board_members permission and on international website to view board member community roles in current_user_can_view_role_option().manage_board_members permission and on Play to assign board member community roles in current_user_can_assign_role().Fixes
SIA_Team::get_members().New “SIA Team Member” ACF field
In order to pull in Profile on team websites, provide a field that lists all team member profiles.
SIA_ACF_field_TeamMember overloading the acf_field_select field;SIA_Profiles_Public::get_team_members() static that loads all active profiles, optionally grouped.Isolate mandatory SIA team member profile fields
Allow creation of Profiles without email, community role, organization, or occupation outside of SIA Play in order to be able to create partner profiles (no community role) or workshop participant profiles (no organization).
'required' parameter to 0 for specific fields from SIA_Profiles_Admin::filter_acf_fields() hooked to acf/load_field;prepare_field hook with load_field for SIA_Profiles_Admin::filter_acf_fields() in SIA_Profiles::define_admin_hooks(). Provide better Profile portraits and local profile results.
Refactor the Profile class to provide reliable, better resolution portraits. Add an argument to profile searches to only look on the local website and not switch to Play in order to find profiles of non-team members.
$search_locally argument for both SIA_Profile::get_profile_post_id() and SIA_Profile::get_profile_by_email() which prevents switching to Play when looking for a profile.SIA_Profile::$thumbnailUrl property set by the new SIA_Profile::get_thumbnail_url() method to provide either the 600x600 cropped portrait (thumbnail_1x1), or a Gravatar;SIA_Profile::$email and SIA_Profile::$portrait properties on instantiation;SIA_Profile::$portrait by replacing the portrait-square image size with the 4x larger thumbnail_1x1;Introduce the licensing status property for teams
Add the is_headquarter method to SIA_Team
Unify the website and wordpressProperties of SIA_Team to match
Start using aliases in the ISO repository to allow for searching by country subdomain
SIA_Profiles_ISO::$aliases constant that stores, by ISO2, the subdomains of teams that have a different subdomain than team post_name;$aliases values when returning from SIA_Profiles_ISO::get_available_slug_ISOs();SIA_Profiles_ISO::get_ISO() (default FALSE) to allow searching by subdomain;SIA_Team::get_websites() for the main website with an instance of SIA_Website in order to have the same type of response for the team website and WordPress properties.Integrate new AAP class as property of SIA_Team
Integrate new AAP class as property of SIA_Team
Fix broken Profile links in Organizations admin table
Instantiate the AAP class with SIA_Team as a constuctor parameter
New user country IG shortcode
Include Jordan (JO) and Italy (IT) in ISO repository
Filter organizations query to provide the archive with only Host and Candidate in the proper order
organizations post type archive show only active “Host” and “Candidate” via the SIA_Profiles_Public::filter_organizations_status() hooked to pre_get_postsorganizations post type archive show all organizations on page 1 ordered alphabetically via the order_organizations_alphabetically hooked to pre_get_posts Allow users with “Coordinator” or “Organizational Lead” community roles to edit own organization
SIA_Profiles_Public::allow_non_editor_to_edit_own_organization() to map_meta_cap filterSIA_Profiles_Admin::maybe_sync_acf() hooked to the admin_init actionSIA_Profiles_Admin::update_organization_featured_image() hooked to the acf/update_value/name=organization_logo (field to post) action and SIA_Profiles_Admin::sync_featured_image_update_with_organization_logo_field() hooked to save_post_organizations (post to field) actionSIA_Organization::socialProfiles from the class’s constructor used in Play (theme) organization single Start tracking own ACF field groups for import in SIA_Profiles_Admin::maybe_sync_acf() hooked to admin_init
Maintenance update, only bug fixes
Fix: Notices and lack of blocking fields while updating a profile on the /my-profile/ page because SIA_Profiles_Admin::filter_acf_fields bails out because there is no global $post variable set
Fix: Team community roles were shown on profile editing page because current_user_can_view_role_option() was not checking the edit is on Play
Fix: Notice thrown by unset $field['faux-disabled'] in SIA_ACF_field_CommunityRole::render_field()
Fix: The “Partnerhips Type” was shown on forms where there were no options to select, for example while editing “Organization” on Play, by adding SIA_ACF_field_PartnershipType::prepare_field()
Fix: Altering the edit profile links to lead to Play when the user has no SIA Passport by validating the user email in SIA_Profiles_Public::manage_edit_profile_link() and SIA_Profiles_Public::manage_edit_user_link()
Add the URL permalink property to SIA_Organization class
Link the Organization Details “Partnership type” field to Glossary terms
Link the Profile Management “Community Role” field to Glossary terms
Provide an Organization GF field to process Candidate organizations’ account requests
Fix oversights in [user] shortcode implemetation
New SIA_Profiles_ISO::get_slug( $ISO ) needed by RQ REST
Fix inconsistent usage of [user] shortcode params;
Fix assuming the current user is a team member in [user].
Fix $only_active param of SIA_Team::getTeam() being ignored by filter_team_status
Display A&AP in Teams admin table
New [user] shortcode and A&AP data in team
$is_licensor property to SIA_Team, only TRUE for international;Rename “Lead” into “Scaling Lead”, fix Countries query filter
Rename “Teams” into “Countries”
Profiles and Organizations are available in publishing sites
Register Stencil blog id constant, use Deployment post registrar
Refactor post types registration.
Include Slovenia (SI) and Côte d’Ivoire (CI) in ISO repository.
Start using custom post type capabilities.
Fix get_teams static and restore _recent-teams shortcode.
Fix profile user fields being left behind after the profile is deleted.
Fix fetching the profile post id when the profile was deleted, but the field was left behind.
Fix missing search results by using ‘post__not_in’ when filtering teams.
Fix wiping out pre-existing or empty ‘post__in’ when filtering teams.
Fix non-formatted values of custom ACF fields.
Fix search results not following access levels.
Provide pipeline status filter in Organizations admin table.
Provide and display all Team Wordpress properties.
Fix access to Access Level for non-superadmins.
Remove migration Bulk Actions
Fix avatar-18 size (as seen in Simple History user filter).
Fix reversed $active_only switch in Team::get_team_by_slug.
Add a prefix parameter to Team name, ensure Playbook context.
Use class constants for organization status and user team roles as single source of truth.
Fixes
Refactored team, organization, and profile status constants.
Moved all account locking functionality to RQ.
Enforce log in with SIA Passport
When the user trying to log in has an active SIA Passport, disable: