>
Final Plugin Test
>
Headers & Footers Plugin - Complete Test
';
echo 'Step 1: WordPress Environment
';
$wp_version = get_bloginfo('version');
$php_version = PHP_VERSION;
$wp_url = get_bloginfo('url');
$wp_admin_url = admin_url();
echo '';
echo '| Component | Status |
';
echo '| WordPress Version | ' . $wp_version . ' |
';
echo '| PHP Version | ' . $php_version . ' |
';
echo '| Site URL | ' . $wp_url . ' |
';
echo '
';
if (defined('ABSPATH')) {
echo 'ABSPATH defined: ' . ABSPATH . '
';
} else {
echo 'ABSPATH not defined!
';
$all_pass = false;
}
echo '';
// ==========================================
// STEP 2: Check plugin files
// ==========================================
echo '';
echo '
Step 2: Plugin Files
';
$plugin_file = plugin_dir_path(__FILE__) . 'pc-headers-and-footers-and-ad-pixels-5ake.php';
$admin_file = dirname(__FILE__) . '/admin/class-admin.php';
$database_file = dirname(__FILE__) . '/includes/class-database.php';
$snippet_file = dirname(__FILE__) . '/includes/class-snippet.php';
$public_file = dirname(__FILE__) . '/public/class-public.php';
$files = array(
'Main plugin' => $plugin_file,
'Admin class' => $admin_file,
'Database class' => $database_file,
'Snippet class' => $snippet_file,
'Public class' => $public_file,
);
foreach ($files as $name => $path) {
if (file_exists($path)) {
$size = filesize($path);
echo "
✓ $name ($size bytes)
";
} else {
echo "
✗ $name NOT FOUND
";
$all_pass = false;
}
}
echo '
';
// ==========================================
// STEP 3: Include and test classes
// ==========================================
echo '';
echo '
Step 3: Load Plugin Classes
';
// Include classes
try {
require_once $database_file;
echo '
Including class-database.php...
';
require_once $snippet_file;
echo '
Including class-snippet.php...
';
echo '
✓ All classes included successfully
';
} catch (Exception $e) {
echo '
✗ Include error: ' . $e->getMessage() . '
';
$all_pass = false;
}
// Check classes exist
if (class_exists('PC_HFAP_Database')) {
echo '
✓ PC_HFAP_Database class exists
';
} else {
echo '
✗ PC_HFAP_Database class not found
';
$all_pass = false;
}
if (class_exists('PC_HFAP_Snippet')) {
echo '
✓ PC_HFAP_Snippet class exists
';
} else {
echo '
✗ PC_HFAP_Snippet class not found
';
$all_pass = false;
}
echo '
';
// ==========================================
// STEP 4: Test database table
// ==========================================
echo '';
echo '
Step 4: Database Table
';
global $wpdb;
try {
// Create tables
PC_HFAP_Database::create_tables();
// Get table name
$table_name = PC_HFAP_Database::get_table_name();
echo '
Table name: ' . $table_name . '
';
// Check if table exists
$table_check = $wpdb->get_var($wpdb->prepare('SHOW TABLES LIKE %s', $table_name));
if ($table_name === $table_check) {
echo '
✓ Table exists: ' . $table_name . '
';
// Get table structure
$columns = $wpdb->get_results("DESCRIBE $table_name", ARRAY_A);
echo '
Table structure:
';
echo '
| Column | Type |
';
foreach ($columns as $col) {
echo '| ' . $col['Field'] . ' | ' . $col['Type'] . ' |
';
}
echo '
';
// Count existing
$count = $wpdb->get_var("SELECT COUNT(*) FROM $table_name");
echo '
Current snippets: ' . $count . '
';
} else {
echo '
✗ Table does NOT exist!
';
$all_pass = false;
}
} catch (Exception $e) {
echo '
✗ Database error: ' . $e->getMessage() . '
';
$all_pass = false;
}
echo '
';
// ==========================================
// STEP 5: Test CREATE operation
// ==========================================
echo '';
echo '
Step 5: Create Snippet
';
$test_snippet_id = 0;
$test_title = 'Test Snippet ' . date('Y-m-d H:i:s');
try {
$data = array(
'title' => $test_title,
'location' => 'header',
'code' => ''
);
$snippet = new PC_HFAP_Snippet($data);
$result = $snippet->save();
if ($result) {
$test_snippet_id = $result;
echo '
✓ Snippet created with ID: ' . $result . '
';
echo '
Title: ' . htmlspecialchars($test_title) . '
';
} else {
echo '
✗ Failed to create snippet
';
echo '
Error: ' . $wpdb->last_error . '
';
$all_pass = false;
}
} catch (Exception $e) {
echo '
✗ Create error: ' . $e->getMessage() . '
';
$all_pass = false;
}
echo '
';
// ==========================================
// STEP 6: Test READ operation
// ==========================================
echo '';
echo '
Step 6: Read Snippet
';
if ($test_snippet_id > 0) {
try {
$snippet = PC_HFAP_Snippet::get_by_id($test_snippet_id);
if ($snippet) {
echo '
✓ Snippet retrieved successfully
';
echo '
';
echo '| ID | ' . $snippet->get_id() . ' |
';
echo '| Title | ' . htmlspecialchars($snippet->get_title()) . ' |
';
echo '| Location | ' . $snippet->get_location() . ' |
';
echo '| Code | ' . htmlspecialchars($snippet->get_code()) . ' |
';
echo '
';
} else {
echo '
✗ Snippet not found!
';
$all_pass = false;
}
} catch (Exception $e) {
echo '
✗ Read error: ' . $e->getMessage() . '
';
$all_pass = false;
}
} else {
echo '
✗ Skipped (no test snippet)
';
$all_pass = false;
}
echo '
';
// ==========================================
// STEP 7: Test UPDATE operation
// ==========================================
echo '';
echo '
Step 7: Update Snippet
';
if ($test_snippet_id > 0) {
try {
$snippet = PC_HFAP_Snippet::get_by_id($test_snippet_id);
if ($snippet) {
$new_title = 'Updated ' . date('Y-m-d H:i:s');
$new_code = '';
$snippet->set_title($new_title);
$snippet->set_code($new_code);
$update_result = $snippet->save();
if ($update_result !== false) {
// Verify update
$updated = PC_HFAP_Snippet::get_by_id($test_snippet_id);
if ($updated->get_title() === $new_title) {
echo '
✓ Title updated successfully
';
} else {
echo '
✗ Title not updated
';
$all_pass = false;
}
if ($updated->get_code() === $new_code) {
echo '
✓ Code updated successfully
';
} else {
echo '
✗ Code not updated
';
$all_pass = false;
}
} else {
echo '
✗ Update failed
';
echo '
Error: ' . $wpdb->last_error . '
';
$all_pass = false;
}
} else {
echo '
✗ Snippet not found for update
';
$all_pass = false;
}
} catch (Exception $e) {
echo '
✗ Update error: ' . $e->getMessage() . '
';
$all_pass = false;
}
} else {
echo '
✗ Skipped (no test snippet)
';
$all_pass = false;
}
echo '
';
// ==========================================
// STEP 8: Test get_all()
// ==========================================
echo '';
echo '
Step 8: Get All Snippets
';
try {
$snippets = PC_HFAP_Snippet::get_all();
echo '
✓ get_all() returned ' . count($snippets) . ' snippet(s)
';
if (!empty($snippets)) {
echo '
| ID | Title | Location |
';
foreach ($snippets as $s) {
echo '';
echo '| ' . $s->get_id() . ' | ';
echo '' . htmlspecialchars($s->get_title()) . ' | ';
echo '' . $s->get_location() . ' | ';
echo '
';
}
echo '
';
}
} catch (Exception $e) {
echo '
✗ get_all() error: ' . $e->getMessage() . '
';
$all_pass = false;
}
echo '
';
// ==========================================
// STEP 9: Test location methods
// ==========================================
echo '';
echo '
Step 9: Location Methods
';
try {
$headers = PC_HFAP_Snippet::get_headers();
$bodies = PC_HFAP_Snippet::get_bodies();
$footers = PC_HFAP_Snippet::get_footers();
echo '
✓ get_headers(): ' . count($headers) . ' snippets
';
echo '
✓ get_bodies(): ' . count($bodies) . ' snippets
';
echo '
✓ get_footers(): ' . count($footers) . ' snippets
';
} catch (Exception $e) {
echo '
✗ Location error: ' . $e->getMessage() . '
';
$all_pass = false;
}
echo '
';
// ==========================================
// STEP 10: Test DELETE operation
// ==========================================
echo '';
echo '
Step 10: Delete Snippet
';
if ($test_snippet_id > 0) {
try {
$snippet = PC_HFAP_Snippet::get_by_id($test_snippet_id);
if ($snippet) {
$delete_result = $snippet->delete();
if ($delete_result) {
// Verify deletion
$deleted = PC_HFAP_Snippet::get_by_id($test_snippet_id);
if (!$deleted) {
echo '
✓ Snippet deleted successfully
';
} else {
echo '
✗ Snippet still exists after delete
';
$all_pass = false;
}
} else {
echo '
✗ Delete operation returned false
';
echo '
Error: ' . $wpdb->last_error . '
';
$all_pass = false;
}
} else {
echo '
✗ Snippet not found for delete
';
$all_pass = false;
}
} catch (Exception $e) {
echo '
✗ Delete error: ' . $e->getMessage() . '
';
$all_pass = false;
}
} else {
echo '
✗ Skipped (no test snippet)
';
$all_pass = false;
}
echo '
';
// ==========================================
// FINAL SUMMARY
// ==========================================
$test_end = microtime(true);
$duration = round(($test_end - $test_start) * 1000, 2);
echo '';
echo '
FINAL RESULT
';
echo '
Test completed in ' . $duration . 'ms
';
if ($all_pass) {
echo '
✓ ALL TESTS PASSED!
';
echo '
The plugin is working correctly.
';
} else {
echo '
✗ SOME TESTS FAILED
';
echo '
Please review the errors above.
';
}
echo '
';
// ==========================================
// NEXT STEPS
// ==========================================
echo '';
echo '
Next Steps
';
echo '
';
echo '
Troubleshooting
';
echo '
';
echo '- If tests failed, check WordPress debug log
';
echo '- Ensure plugin is properly uploaded
';
echo '- Try deactivating and reactivating the plugin
';
echo '
';
echo '
';
echo '