<?php
declare(strict_types=1);
namespace MeinWeimar;
final class Shortcodes
{
public static function hooks(): void
{
add_shortcode('meinweimar_brand', [self::class, 'brand']);
add_shortcode('meinweimar_navigation', [self::class, 'navigation']);
add_shortcode('meinweimar_header', [self::class, 'header']);
add_shortcode('meinweimar_discovery', [self::class, 'discovery']);
add_shortcode('meinweimar_resource_detail', [self::class, 'resource_detail']);
add_shortcode('meinweimar_place_detail', [self::class, 'place_detail']);
add_shortcode('meinweimar_event_detail', [self::class, 'event_detail']);
add_shortcode('meinweimar_account', [self::class, 'account']);
}
public static function brand(array $attributes = []): string
{
return Renderer::brand_markup(shortcode_atts(['wordmark' => '', 'variant' => 'light'], $attributes, 'meinweimar_brand'));
}
public static function discovery(array $attributes = []): string
{
return Renderer::discovery_markup(shortcode_atts([
'type' => 'places',
'per_page' => 12,
'search' => '',
'category' => '',
'region' => '',
'sort' => 'auto',
'radius_km' => 10,
], $attributes, 'meinweimar_discovery'));
}
public static function header(array $attributes = []): string
{
return Renderer::shell_markup($attributes);
}
public static function navigation(array $attributes = []): string
{
return Renderer::navigation_markup();
}
public static function place_detail(array $attributes = []): string
{
$attributes = shortcode_atts(['id' => 0], $attributes, 'meinweimar_place_detail');
return DetailRenderer::place_markup(absint($attributes['id']));
}
public static function resource_detail(array $attributes = []): string
{
$attributes = shortcode_atts(['resource' => '', 'id' => 0], $attributes, 'meinweimar_resource_detail');
return DetailRenderer::resource_markup(absint($attributes['id']), sanitize_key((string) $attributes['resource']));
}
public static function event_detail(array $attributes = []): string
{
$attributes = shortcode_atts(['id' => 0], $attributes, 'meinweimar_event_detail');
return DetailRenderer::event_markup(absint($attributes['id']));
}
public static function account(array $attributes = []): string
{
return Renderer::account_markup($attributes);
}
}
