add_section('experience_journey_order_section', array( 'title' => __('Experience Journey Order', 'grilctours'), 'priority' => 200, )); // Add setting $wp_customize->add_setting('experience_journey_order', array( 'default' => '', 'sanitize_callback' => 'sanitize_experience_journey_order', 'transport' => 'refresh', )); // Add control $wp_customize->add_control(new WP_Customize_Sortable_Posts_Control($wp_customize, 'experience_journey_order', array( 'section' => 'experience_journey_order_section', 'label' => __('Drag & Drop to Reorder', 'grilctours'), 'description' => __('Arrange the order of Experience Journeys on the homepage.', 'grilctours'), ))); } add_action('customize_register', 'grilctours_customize_journey_order'); // Sanitizacijska funkcija za vrstni red function sanitize_experience_journey_order($input) { $order = explode(',', $input); $sanitized = array(); foreach ($order as $post_id) { $post_id = absint($post_id); if ($post_id && get_post_status($post_id)) { $sanitized[] = $post_id; } } return implode(',', $sanitized); } // Prilagodljiv control class class WP_Customize_Sortable_Posts_Control extends WP_Customize_Control { public $type = 'sortable_posts'; public $post_type = 'experience_journey'; public function render_content() { $saved_order = (array) $this->value(); $all_posts = get_posts(array( 'post_type' => $this->post_type, 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', )); // Split into saved and new posts $ordered_posts = array(); $new_posts = array(); // Keep valid saved posts foreach ($saved_order as $post_id) { if (in_array($post_id, $all_posts)) { $ordered_posts[] = $post_id; } } // Add new posts not in saved order foreach ($all_posts as $post_id) { if (!in_array($post_id, $ordered_posts)) { $new_posts[] = $post_id; } } $ordered_posts = array_merge($ordered_posts, $new_posts); ?> link(); ?> value="" />