/**
* Ensure Studio page exists with custom template
*/
function thrilliant_create_studio_page() {
$studio_page = get_page_by_path('studio');
$template_slug = 'thr-studio-page-template.php';
if (!$studio_page) {
$page_id = wp_insert_post([
'post_title' => 'Studio',
'post_name' => 'studio',
'post_status' => 'publish',
'post_type' => 'page',
'post_content' => '',
]);
if ($page_id && !is_wp_error($page_id)) {
update_post_meta($page_id, '_wp_page_template', $template_slug);
}
} else {
update_post_meta($studio_page->ID, '_wp_page_template', $template_slug);
}
}
register_activation_hook(__FILE__, 'thrilliant_create_studio_page');
/**
* Register custom studio template with WordPress
*/
function thrilliant_register_studio_template($templates) {
$templates['thr-studio-page-template.php'] = 'Thrilliant Studio Page';
return $templates;
}
add_filter('theme_page_templates', 'thrilliant_register_studio_template');
/**
* Load studio template from plugin when assigned or at /studio
*/
function thrilliant_load_studio_template($template) {
if (!is_page()) {
return $template;
}
$plugin_template = plugin_dir_path(__FILE__) . 'studio-page-template.php';
$page_template = get_page_template_slug(get_queried_object_id());
if ($page_template === 'thr-studio-page-template.php' && file_exists($plugin_template)) {
return $plugin_template;
}
if (is_page('studio') && file_exists($plugin_template)) {
return $plugin_template;
}
return $template;
}
add_filter('template_include', 'thrilliant_load_studio_template');
/**
* Enqueue assets for Studio page
*/
function thrilliant_enqueue_studio_page_assets() {
if (!is_page()) {
return;
}
$is_studio_page = is_page('studio') || get_page_template_slug(get_queried_object_id()) === 'thr-studio-page-template.php';
if (!$is_studio_page) {
return;
}
$css_file = __DIR__ . '/assets/studio-page.css';
$js_file = __DIR__ . '/assets/studio-page.js';
wp_enqueue_style(
'thr-studio-page',
plugins_url('assets/studio-page.css', __FILE__),
[],
file_exists($css_file) ? filemtime($css_file) : '1.0.0'
);
wp_enqueue_script(
'thr-studio-page',
plugins_url('assets/studio-page.js', __FILE__),
[],
file_exists($js_file) ? filemtime($js_file) : '1.0.0',
true
);
wp_localize_script('thr-studio-page', 'thrStudioPage', [
'restUrl' => rest_url('thrilliant/v1/studio-messages/public'),
'limit' => 200,
'refresh' => intval(get_option('thr_studio_messages_public_refresh', 15)) * 1000,
]);
}
add_action('wp_enqueue_scripts', 'thrilliant_enqueue_studio_page_assets');
Ruggedman Archives - 102.3 Max FM