define('WPKB_FILE', __FILE__);
define('WPKB_VERSION', '1.2');
// load composer autoloader
if (!function_exists('wpkb')) {
    require __DIR__ . '/vendor/autoload.php';
}
// load constants, filters, actions & shortcodes
require __DIR__ . '/src/default-actions.php';
require __DIR__ . '/src/default-filters.php';
require __DIR__ . '/src/shortcodes.php';
// instantiate object tree
global $wpkb;
$wpkb = wpkb();
$wpkb['options'] = $options = new Options('wpkb', array('custom_archive_page_id' => 0));
$router = new Router($options->get('custom_archive_page_id', 0));
$router->add_hooks();
$wpkb['plugin'] = $plugin = new Plugin(WPKB_VERSION, __FILE__, __DIR__);
$wpkb['categories'] = new Term_List('wpkb-category');
$wpkb['keywords'] = new Term_List('wpkb-keyword');
// search
$wpkb['search'] = $search = new Search($plugin);
$search->add_hooks();
// breadcrumbs
$wpkb['breadcrumbs'] = function () use($router) {
    return new Breadcrumbs\Crumbs($router->archive_page);
};
// code highlighting
$highlighting = new CodeHighlighting($plugin);
$highlighting->add_hooks();
// callout boxes
$callouts = new Callouts();