Implements automatic creation of required plugin pages (Community Login, Trainer Registration, Trainer Dashboard) upon plugin activation. This addresses E2E test failures caused by missing pages in the test environment. - Adds activation hook in `hvac-community-events.php` to call `hvac_ce_create_required_pages`. - The callback function checks for existing pages by slug and creates them using `wp_insert_post` if missing. Includes debug logging. Also fixes issues identified during E2E test debugging: - Corrects fatal error in `includes/community/class-login-handler.php` by replacing undefined constant `HVAC_COMMUNITY_EVENTS_PATH` with `HVAC_CE_PLUGIN_DIR`. - Updates `tests/e2e/tests/login.spec.ts` to use the correct selector `#wp-submit` for the login form submit button instead of `button[type="submit"]`. Documentation updates: - Adds `docs/automatic-page-creation-plan.md`. - Updates `README.md` regarding automatic page creation. - Updates Memory Bank files (`decisionLog.md`, `progress.md`, `activeContext.md`). Note: Activation hook logging did not appear during WP-CLI activation, requiring further investigation if page creation issues persist. E2E test confirmation pending.
		
			
				
	
	
	
	
		
			5.7 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			5.7 KiB
		
	
	
	
	
	
	
	
Automatic Page Creation Plan
Date: 2025-03-28 Status: Approved
1. Goal
Implement automatic creation of required plugin pages (Login, Registration, Dashboard) upon plugin activation. This ensures a consistent setup across environments, simplifies the user experience, and resolves E2E test failures caused by missing pages (specifically the Community Login page).
2. Background
The initial task was to fix failing E2E tests for the Community Login page. Investigation revealed:
- The tests targeted /community-login/, but this page was not guaranteed to exist or contain the[hvac_community_login]shortcode in the development environment restored from backup.
- Searches confirmed the plugin did not include logic (wp_insert_post) to automatically create this or other required pages.
- Manual page creation is possible but less reliable and adds setup steps.
- The decision was made to add functionality to the plugin to create necessary pages automatically upon activation.
3. Required Pages & Shortcodes (Phase 1)
The following pages will be created automatically if they do not already exist with the specified slug:
| Feature | Title | Slug | Shortcode / Content | Notes | 
|---|---|---|---|---|
| Community Login | Community Login | community-login | <!-- wp:shortcode -->[hvac_community_login]<!-- /wp:shortcode --> | Shortcode confirmed. | 
| Trainer Registration | Trainer Registration | trainer-registration | <!-- wp:shortcode -->[hvac_trainer_registration]<!-- /wp:shortcode --> | Shortcode confirmed. | 
| Trainer Dashboard | Trainer Dashboard | hvac-dashboard | (Empty) | Relies on template redirect or assignment. | 
(Phase 2 pages like Email Attendees, Order Summary can be added later once their shortcodes/implementation details are confirmed).
4. Implementation Plan
- Activation Hook: Use register_activation_hookin the main plugin file (hvac-community-events.php) to register a callback function that runs only when the plugin is activated.
- Callback Function (hvac_ce_create_required_pages):- Define an array containing the details for the required pages (Title, Slug, Content) as shown in the table above.
- Iterate through this array.
- For each page definition:
- Check if a page with the specified slugalready exists usingget_page_by_path( $slug, OBJECT, 'page' ).
- If the page does NOT exist:
- Prepare the post data array for wp_insert_post():- post_title: From the page definition array.
- post_name(slug): From the page definition array key.
- post_content: From the page definition array (using Gutenberg block format for shortcodes).
- post_status:- 'publish'.
- post_type:- 'page'.
- comment_status:- 'closed'.
- ping_status:- 'closed'.
 
- Call wp_insert_post( $post_data )to create the page.
- (Optional but Recommended): Store the returned $page_idin a WordPress option (e.g.,hvac_community_pagesarray) keyed by the feature (e.g., 'login', 'registration') for potential future use (like cleanup on deactivation or easy lookup).
 
- Prepare the post data array for 
- If the page DOES exist: Do nothing to avoid duplicates or overwriting user changes.
 
- Check if a page with the specified 
 
5. Testing Strategy
- Manual Testing:
- Ensure the plugin is deactivated.
- Delete any existing pages with the slugs community-login,trainer-registration,hvac-dashboard.
- Activate the plugin.
- Verify in WP Admin -> Pages that the three pages now exist with the correct titles, slugs, and content (shortcodes or empty).
- Verify the pages use the default theme template and are editable with the block editor.
 
- E2E Testing:
- Run the login test suite: ./bin/run-tests.sh --login
- Confirm the tests now pass as the /community-login/page exists and contains the shortcode.
 
- Run the login test suite: 
- Unit/Integration Testing (Optional but Recommended):
- Add tests for the hvac_ce_create_required_pagesfunction.
- Mock get_page_by_pathandwp_insert_post.
- Verify wp_insert_postis called with the correct data when a page is missing.
- Verify wp_insert_postis not called whenget_page_by_pathfinds an existing page.
 
- Add tests for the 
6. Documentation Updates
- Update memory-bank/decisionLog.md: Add decision for automatic page creation.
- Update memory-bank/progress.md: Add task for implementing this feature.
- Update wordpress-dev/README.md: Note that required pages are now created automatically on activation.
7. Process Flow Diagram
graph TD
    A[Plugin Activation] --> B{Run Activation Callback};
    B --> C{Loop Through Required Pages (Login, Register, Dashboard...)};
    C --> D{Page Exists? (Check by Slug)};
    D -- No --> E[Prepare Page Data (Title, Slug, Shortcode Block)];
    D -- Yes --> C;
    E --> F[Create Page via wp_insert_post()];
    F --> G{Store Page ID? (Optional)};
    G -- Yes --> H[Update WP Option with Page ID];
    G -- No --> C;
    H --> C;
    C -- All Pages Processed --> I[Activation Complete];
    subgraph "Activation Logic"
        B
        C
        D
        E
        F
        G
        H
    end