_x( 'Slides', 'Post type general name', 'hi-school-slide-manager' ), 'singular_name' => _x( 'Slide', 'Post type singular name', 'hi-school-slide-manager' ), 'menu_name' => _x( 'Slides', 'Admin Menu text', 'hi-school-slide-manager' ), 'name_admin_bar' => _x( 'Slide', 'Add New on Toolbar', 'hi-school-slide-manager' ), 'add_new' => __( 'Add New', 'hi-school-slide-manager' ), 'add_new_item' => __( 'Add New Slide', 'hi-school-slide-manager' ), 'new_item' => __( 'New Slide', 'hi-school-slide-manager' ), 'edit_item' => __( 'Edit Slide', 'hi-school-slide-manager' ), 'view_item' => __( 'View Slide', 'hi-school-slide-manager' ), 'all_items' => __( 'All Slides', 'hi-school-slide-manager' ), 'search_items' => __( 'Search Slides', 'hi-school-slide-manager' ), 'parent_item_colon' => __( 'Parent Slides:', 'hi-school-slide-manager' ), 'not_found' => __( 'No slides found.', 'hi-school-slide-manager' ), 'not_found_in_trash' => __( 'No slides found in Trash.', 'hi-school-slide-manager' ), 'featured_image' => _x( 'Background Image', 'Overrides the "Featured Image" phrase', 'hi-school-slide-manager' ), 'set_featured_image' => _x( 'Set background image', 'Overrides the "Set featured image" phrase', 'hi-school-slide-manager' ), 'remove_featured_image' => _x( 'Remove background image', 'Overrides the "Remove featured image" phrase', 'hi-school-slide-manager' ), 'use_featured_image' => _x( 'Use as background image', 'Overrides the "Use as featured image" phrase', 'hi-school-slide-manager' ), 'archives' => _x( 'Slide archives', 'The post type archive label used in nav menus', 'hi-school-slide-manager' ), 'insert_into_item' => _x( 'Insert into slide', 'Overrides the "Insert into post" phrase', 'hi-school-slide-manager' ), 'uploaded_to_this_item' => _x( 'Uploaded to this slide', 'Overrides the "Uploaded to this post" phrase', 'hi-school-slide-manager' ), 'filter_items_list' => _x( 'Filter slides list', 'Screen reader text for the filter links', 'hi-school-slide-manager' ), 'items_list_navigation' => _x( 'Slides list navigation', 'Screen reader text for the pagination', 'hi-school-slide-manager' ), 'items_list' => _x( 'Slides list', 'Screen reader text for the items list', 'hi-school-slide-manager' ), ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'slide' ), 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => 20, 'menu_icon' => 'dashicons-slides', 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' ), 'show_in_rest' => true, 'rest_base' => 'slides', 'rest_controller_class' => 'HSSM_REST_Slides_Controller', ); register_post_type( self::POST_TYPE, $args ); } /** * Register custom taxonomies * * @since 1.0.0 */ public function register_taxonomies() { // Site taxonomy for organizing slides by target site $site_labels = array( 'name' => _x( 'Target Sites', 'taxonomy general name', 'hi-school-slide-manager' ), 'singular_name' => _x( 'Target Site', 'taxonomy singular name', 'hi-school-slide-manager' ), 'search_items' => __( 'Search Sites', 'hi-school-slide-manager' ), 'all_items' => __( 'All Sites', 'hi-school-slide-manager' ), 'parent_item' => __( 'Parent Site', 'hi-school-slide-manager' ), 'parent_item_colon' => __( 'Parent Site:', 'hi-school-slide-manager' ), 'edit_item' => __( 'Edit Site', 'hi-school-slide-manager' ), 'update_item' => __( 'Update Site', 'hi-school-slide-manager' ), 'add_new_item' => __( 'Add New Site', 'hi-school-slide-manager' ), 'new_item_name' => __( 'New Site Name', 'hi-school-slide-manager' ), 'menu_name' => __( 'Target Sites', 'hi-school-slide-manager' ), ); $site_args = array( 'hierarchical' => false, 'labels' => $site_labels, 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'slide-site' ), 'show_in_rest' => true, ); register_taxonomy( self::SITE_TAXONOMY, array( self::POST_TYPE ), $site_args ); // Client taxonomy for organizing slides by client (optional) $client_labels = array( 'name' => _x( 'Clients', 'taxonomy general name', 'hi-school-slide-manager' ), 'singular_name' => _x( 'Client', 'taxonomy singular name', 'hi-school-slide-manager' ), 'search_items' => __( 'Search Clients', 'hi-school-slide-manager' ), 'all_items' => __( 'All Clients', 'hi-school-slide-manager' ), 'parent_item' => __( 'Parent Client', 'hi-school-slide-manager' ), 'parent_item_colon' => __( 'Parent Client:', 'hi-school-slide-manager' ), 'edit_item' => __( 'Edit Client', 'hi-school-slide-manager' ), 'update_item' => __( 'Update Client', 'hi-school-slide-manager' ), 'add_new_item' => __( 'Add New Client', 'hi-school-slide-manager' ), 'new_item_name' => __( 'New Client Name', 'hi-school-slide-manager' ), 'menu_name' => __( 'Clients', 'hi-school-slide-manager' ), ); $client_args = array( 'hierarchical' => false, 'labels' => $client_labels, 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'slide-client' ), 'show_in_rest' => true, ); register_taxonomy( self::CLIENT_TAXONOMY, array( self::POST_TYPE ), $client_args ); // Add default terms for the three companion sites $this->create_default_site_terms(); } /** * Create default site terms for the three companion sites * * @since 1.0.0 */ private function create_default_site_terms() { $default_sites = array(); // Use centralized method from HSSM_Main if available if ( class_exists( 'HSSM_Main' ) && method_exists( 'HSSM_Main', 'get_companion_sites' ) ) { $default_sites = HSSM_Main::get_companion_sites(); } else { // Fallback $default_sites = array( array( 'slug' => 'hi-school', 'name' => 'Hi-School Pharmacy', 'description' => 'Hi-School Pharmacy companion site' ), array( 'slug' => 'one-stop', 'name' => 'One Stop Hardware', 'description' => 'One Stop Hardware companion site' ), array( 'slug' => 'ace', 'name' => 'Ace Hardware', 'description' => 'Ace Hardware companion site' ) ); } foreach ( $default_sites as $site ) { if ( ! term_exists( $site['slug'], self::SITE_TAXONOMY ) ) { wp_insert_term( $site['name'], self::SITE_TAXONOMY, array( 'slug' => $site['slug'], 'description' => $site['description'] ) ); } } } /** * Add meta boxes for slide fields * * @since 1.0.0 */ public function add_meta_boxes() { add_meta_box( 'hssm_slide_details', __( 'Slide Details', 'hi-school-slide-manager' ), array( $this, 'slide_details_meta_box' ), self::POST_TYPE, 'normal', 'high' ); add_meta_box( 'hssm_background_image_help', __( 'Background Image Guidelines', 'hi-school-slide-manager' ), array( $this, 'background_image_help_meta_box' ), self::POST_TYPE, 'side', 'high' ); add_meta_box( 'hssm_slide_scheduling', __( 'Slide Scheduling', 'hi-school-slide-manager' ), array( $this, 'slide_scheduling_meta_box' ), self::POST_TYPE, 'side', 'default' ); add_meta_box( 'hssm_slide_targeting', __( 'Site Targeting', 'hi-school-slide-manager' ), array( $this, 'slide_targeting_meta_box' ), self::POST_TYPE, 'side', 'default' ); } /** * Render slide details meta box * * @since 1.0.0 * @param WP_Post $post Current post object */ public function slide_details_meta_box( $post ) { wp_nonce_field( 'hssm_save_slide_meta', 'hssm_slide_meta_nonce' ); $subtitle = get_post_meta( $post->ID, '_hssm_subtitle', true ); $buttons = get_post_meta( $post->ID, '_hssm_buttons', true ); $order = get_post_meta( $post->ID, '_hssm_order', true ); $hide_all_text = get_post_meta( $post->ID, '_hssm_hide_all_text', true ); // Initialize buttons array if empty if ( ! is_array( $buttons ) || empty( $buttons ) ) { $buttons = array( array( 'text' => 'Learn More', 'url' => '' ) ); } ?>
|
|
|
ID, self::SITE_TAXONOMY, array( 'fields' => 'ids' ) ); $current_clients = wp_get_post_terms( $post->ID, self::CLIENT_TAXONOMY, array( 'fields' => 'ids' ) ); // Get all available site terms $site_terms = get_terms( array( 'taxonomy' => self::SITE_TAXONOMY, 'hide_empty' => false, ) ); // Get all available client terms $client_terms = get_terms( array( 'taxonomy' => self::CLIENT_TAXONOMY, 'hide_empty' => false, ) ); ?>
description ) : ?>
description ); ?>