fix(bricks): enable publicTemplates setting so /template/* URLs resolve
Bricks's frontend.php template_redirect() permanently redirects any /template/* URL to the homepage (site_url(), 301) when : - is_singular(bricks_template) - !current_user_can_use_builder() - !isset(bricks_global_settings.publicTemplates) - !maintenance mode This kicks in BEFORE the Bricks builder check can run, so clicking "Edit with Bricks" on a template ends up redirected to home → admin URL → Bricks's own builder.php sees current_post_type as empty (because the post wasn't actually queried before the redirect) → final redirect to wp-admin/edit.php?post_type=&bricks_notice=error_post_type with the "Invalid post type" notice. Setting bricks_global_settings.publicTemplates = '1' disables this preemptive redirect. Templates stay excluded from search but their permalinks resolve normally → builder can attach. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
34
tools/av-enable-public-templates.php
Normal file
34
tools/av-enable-public-templates.php
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Plugin Name: Asterion — Enable Bricks publicTemplates setting
|
||||||
|
* /?av_enable_public_templates=1
|
||||||
|
*
|
||||||
|
* Bricks redirects /template/* URLs to the homepage when the user can't use
|
||||||
|
* the builder AND publicTemplates is unset. This causes "Edit with Bricks"
|
||||||
|
* to fail with "Invalid post type" because the builder URL (?bricks=run on
|
||||||
|
* the template permalink) gets redirected before reaching the builder.
|
||||||
|
*
|
||||||
|
* The fix : set publicTemplates=1 in Bricks global settings. Templates are
|
||||||
|
* still excluded from search results, but their permalinks resolve normally
|
||||||
|
* → the builder can load them.
|
||||||
|
*/
|
||||||
|
defined('ABSPATH') || exit;
|
||||||
|
|
||||||
|
add_action('template_redirect', function () {
|
||||||
|
if (! in_array($_SERVER['SERVER_NAME'] ?? '', ['localhost', '127.0.0.1'], true)) return;
|
||||||
|
if (empty($_GET['av_enable_public_templates'])) return;
|
||||||
|
|
||||||
|
header('Content-Type: text/plain; charset=utf-8');
|
||||||
|
|
||||||
|
$opts = get_option('bricks_global_settings', []);
|
||||||
|
if (! is_array($opts)) $opts = [];
|
||||||
|
|
||||||
|
$before = $opts['publicTemplates'] ?? '(unset)';
|
||||||
|
$opts['publicTemplates'] = '1';
|
||||||
|
update_option('bricks_global_settings', $opts);
|
||||||
|
|
||||||
|
echo "bricks_global_settings.publicTemplates : " . var_export($before, true) . " → '1'\n";
|
||||||
|
echo "\nTemplate URLs (/template/...) should now resolve directly without redirecting to home.\n";
|
||||||
|
echo "Edit with Bricks on Header / Footer / Single Post should work.\n";
|
||||||
|
exit;
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user