esc_html__('Primary Menu', 'nonprofit-starter'), 'footer' => esc_html__('Footer Menu', 'nonprofit-starter'), ]); // Switch default core markup to output valid HTML5 add_theme_support('html5', [ 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', 'style', 'script', ]); // Add theme support for selective refresh for widgets add_theme_support('customize-selective-refresh-widgets'); // Add support for editor styles add_theme_support('editor-styles'); // Enqueue editor styles add_editor_style('style.css'); // Add support for responsive embedded content add_theme_support('responsive-embeds'); // Add support for wide and full alignment add_theme_support('align-wide'); // Add support for custom line height controls add_theme_support('custom-line-height'); // Add support for custom spacing controls add_theme_support('custom-spacing'); // Add support for custom units add_theme_support('custom-units'); // Add support for block styles add_theme_support('wp-block-styles'); } add_action('after_setup_theme', 'nonprofit_starter_setup'); /** * Set the content width in pixels */ function nonprofit_starter_content_width(): void { $GLOBALS['content_width'] = apply_filters('nonprofit_starter_content_width', 1200); } add_action('after_setup_theme', 'nonprofit_starter_content_width', 0); /** * Enqueue scripts and styles */ function nonprofit_starter_scripts(): void { // Enqueue main stylesheet wp_enqueue_style( 'nonprofit-starter-style', get_stylesheet_uri(), [], wp_get_theme()->get('Version') ); // Enqueue main JavaScript file wp_enqueue_script( 'nonprofit-starter-main', get_template_directory_uri() . '/assets/js/main.js', [], wp_get_theme()->get('Version'), true ); // Enqueue comment reply script on single posts if (is_singular() && comments_open() && get_option('thread_comments')) { wp_enqueue_script('comment-reply'); } } add_action('wp_enqueue_scripts', 'nonprofit_starter_scripts'); /** * Register widget areas */ function nonprofit_starter_widgets_init(): void { register_sidebar([ 'name' => esc_html__('Sidebar', 'nonprofit-starter'), 'id' => 'sidebar-1', 'description' => esc_html__('Add widgets here to appear in your sidebar.', 'nonprofit-starter'), 'before_widget' => ' ', 'after_widget' => ' ', 'before_title' => ' ', 'after_title' => ' ', ]); register_sidebar([ 'name' => esc_html__('Footer', 'nonprofit-starter'), 'id' => 'footer-1', 'description' => esc_html__('Add widgets here to appear in your footer.', 'nonprofit-starter'), 'before_widget' => ' ', 'after_widget' => ' ', 'before_title' => ' ', 'after_title' => ' ', ]); } add_action('widgets_init', 'nonprofit_starter_widgets_init'); /** * Register Custom Post Type: Events * Perfect for nonprofit organizations to showcase upcoming events */ function nonprofit_starter_register_events_cpt(): void { $labels = [ 'name' => _x('Events', 'Post Type General Name', 'nonprofit-starter'), 'singular_name' => _x('Event', 'Post Type Singular Name', 'nonprofit-starter'), 'menu_name' => __('Events', 'nonprofit-starter'), 'name_admin_bar' => __('Event', 'nonprofit-starter'), 'archives' => __('Event Archives', 'nonprofit-starter'), 'attributes' => __('Event Attributes', 'nonprofit-starter'), 'parent_item_colon' => __('Parent Event:', 'nonprofit-starter'), 'all_items' => __('All Events', 'nonprofit-starter'), 'add_new_item' => __('Add New Event', 'nonprofit-starter'), 'add_new' => __('Add New', 'nonprofit-starter'), 'new_item' => __('New Event', 'nonprofit-starter'), 'edit_item' => __('Edit Event', 'nonprofit-starter'), 'update_item' => __('Update Event', 'nonprofit-starter'), 'view_item' => __('View Event', 'nonprofit-starter'), 'view_items' => __('View Events', 'nonprofit-starter'), 'search_items' => __('Search Event', 'nonprofit-starter'), 'not_found' => __('Not found', 'nonprofit-starter'), 'not_found_in_trash' => __('Not found in Trash', 'nonprofit-starter'), 'featured_image' => __('Featured Image', 'nonprofit-starter'), 'set_featured_image' => __('Set featured image', 'nonprofit-starter'), 'remove_featured_image' => __('Remove featured image', 'nonprofit-starter'), 'use_featured_image' => __('Use as featured image', 'nonprofit-starter'), 'insert_into_item' => __('Insert into event', 'nonprofit-starter'), 'uploaded_to_this_item' => __('Uploaded to this event', 'nonprofit-starter'), 'items_list' => __('Events list', 'nonprofit-starter'), 'items_list_navigation' => __('Events list navigation', 'nonprofit-starter'), 'filter_items_list' => __('Filter events list', 'nonprofit-starter'), ]; $args = [ 'label' => __('Event', 'nonprofit-starter'), 'description' => __('Nonprofit events and programs', 'nonprofit-starter'), 'labels' => $labels, 'supports' => ['title', 'editor', 'excerpt', 'thumbnail', 'revisions', 'custom-fields'], 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'menu_icon' => 'dashicons-calendar-alt', 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'post', 'show_in_rest' => true, // Enable Gutenberg editor 'rest_base' => 'events', 'rewrite' => [ 'slug' => 'events', 'with_front' => false, ], ]; register_post_type('event', $args); } add_action('init', 'nonprofit_starter_register_events_cpt'); /** * Add custom excerpt length */ function nonprofit_starter_excerpt_length(int $length): int { return 30; } add_filter('excerpt_length', 'nonprofit_starter_excerpt_length'); /** * Change excerpt more string */ function nonprofit_starter_excerpt_more(string $more): string { return '...'; } add_filter('excerpt_more', 'nonprofit_starter_excerpt_more'); /** * Add body classes for better styling control */ function nonprofit_starter_body_classes(array $classes): array { // Add a class if sidebar is active if (is_active_sidebar('sidebar-1')) { $classes[] = 'has-sidebar'; } // Add page slug to body class if (is_page()) { global $post; $classes[] = 'page-' . $post->post_name; } return $classes; } add_filter('body_class', 'nonprofit_starter_body_classes'); /** * Custom template tags for this theme */ require get_template_directory() . '/inc/template-tags.php'; /** * Add custom query vars for events filtering */ function nonprofit_starter_query_vars(array $vars): array { $vars[] = 'event_date'; return $vars; } add_filter('query_vars', 'nonprofit_starter_query_vars'); https://studiotuesday.dev/wp-sitemap-posts-post-1.xmlhttps://studiotuesday.dev/wp-sitemap-posts-page-1.xmlhttps://studiotuesday.dev/wp-sitemap-taxonomies-category-1.xmlhttps://studiotuesday.dev/wp-sitemap-users-1.xml