render_layout_open('Compatibility', 'compatibility', 'Check compatibility status with popular plugins, page builders, and caching solutions.');
?>
render_compatibility_sections(); ?>
Host Blocking Test
Verify if this site can reach services.
Test Configuration
Test connectivity by running both GET and POST requests. Results appear below.
render_last_automatic_check(); ?>
Test Results
render_troubleshooting_section(); ?>
🚫 Excluded URLs
Manage URLs where should not run. Add URL patterns to exclude specific pages from processing.
Add New Excluded URL
Enter the URL or pattern you want to exclude from .
How the URL should be matched against the pattern.
Excluded URLs
Loading excluded URLs...
render_layout_close();
}
/**
* Show the result of the last automatic host blocking check.
*
* Reads the stored result only — it never triggers a probe, so opening this page
* costs nothing extra. The automatic check runs ~10 minutes after activation and
* weekly after that; the button above re-runs the same probe on demand.
*/
private function render_last_automatic_check(): void
{
if (!class_exists('Metasync_Host_Blocking_Check')) {
return;
}
$checker = Metasync_Host_Blocking_Check::get_instance();
$result = $checker->get_last_result();
echo '
';
if ($result === null) {
if (!$checker->site_is_publicly_reachable()) {
echo esc_html__('Automatic checks are skipped on local and private-network sites, because our services cannot call this site back. Use the button above to test manually.', 'metasync');
} else {
echo esc_html__('The automatic check has not run yet. It runs about 10 minutes after activation, then weekly.', 'metasync');
}
echo '
';
return;
}
$blocked = [];
if ($result['get_blocked']) {
$blocked[] = 'GET';
}
if ($result['post_blocked']) {
$blocked[] = 'POST';
}
if (empty($blocked)) {
printf(
/* translators: %s: date/time of the last automatic check */
esc_html__('Last automatic check: %s — no blocking detected.', 'metasync'),
esc_html($result['checked_at'])
);
} else {
printf(
/* translators: 1: date/time of the last automatic check, 2: blocked HTTP methods */
esc_html__('Last automatic check: %1$s — %2$s requests were blocked. Re-run the test above after changing any firewall or security settings.', 'metasync'),
esc_html($result['checked_at']),
esc_html(implode(' and ', $blocked))
);
}
echo '';
}
public function render_compatibility_sections()
{
?>
'Title tag disappears when Yoast SEO is active',
'cause' => 'Yoast SEO takes ownership of the tag. ' . $plugin_name . ' filters may conflict if both try to modify the document title at the same priority.',
'fix' => 'Go to ' . $plugin_name . ' → Settings → Compatibility and make sure "Yoast SEO title handoff" is enabled. This lets Yoast own the title while ' . $plugin_name . ' passes its optimised title through Yoast.',
],
[
'title' => $otto_name . ' changes not appearing after cache flush',
'cause' => 'Some cache plugins (WP Rocket, Kinsta) serve stale HTML even after a purge if cache warm-up races with the write.',
'fix' => 'Increase the cache warm-up timeout in ' . $plugin_name . ' → Settings → Advanced, or disable "Immediate Warm-up" and let the cache rebuild organically.',
],
[
'title' => 'SEO meta not showing for Oxygen Builder pages',
'cause' => 'Oxygen replaces the standard WordPress template, bypassing some meta output hooks.',
'fix' => $plugin_name . ' automatically handles Oxygen compatibility — no setting required. If meta is still missing, ensure ' . $plugin_name . ' is up to date and try clearing any server-side or CDN cache.',
],
[
'title' => 'Schema markup injected on every page instead of the target page only',
'cause' => 'A known bug in versions prior to 2.5.20 where schema was registered globally.',
'fix' => 'Update to the latest version. Go to Settings → Schema Markup and re-save your configuration.',
],
[
'title' => 'Sitemap returns 404',
'cause' => 'Permalink flush needed after activation or after a WordPress update.',
'fix' => 'Go to Settings → Permalinks in WordPress admin and click "Save Changes" (no actual change needed — this flushes rewrite rules).',
],
[
'title' => 'Cloudflare / CDN caching stale SEO meta',
'cause' => 'CDN caches the full HTML response including meta tags. After updating SEO meta, the CDN may serve old content.',
'fix' => 'Purge the CDN cache for the affected URL via your CDN dashboard, or enable automatic purge integration in ' . $plugin_name . ' → Settings → Cache.',
],
];
?>