add_shortcode('gamepix_games', function() { $sid = get_option('gamepix_sid', '43E0A'); $pagination = get_option('gamepix_pagination', 12); $category = isset($_GET['category']) ? sanitize_text_field($_GET['category']) : ''; $tag = isset($_GET['tag']) ? sanitize_text_field($_GET['tag']) : ''; $search = isset($_GET['search']) ? sanitize_text_field($_GET['search']) : ''; $page = isset($_GET['pg']) ? max(1, intval($_GET['pg'])) : 1; $feed_url = "https://feeds.gamepix.com/v2/json?sid={$sid}&pagination={$pagination}&page={$page}"; $response = wp_remote_get($feed_url); if (is_wp_error($response)) return "
Unable to fetch games.
"; $json = json_decode(wp_remote_retrieve_body($response), true); if (!isset($json['items'])) return "No games found.
"; $games = array_filter($json['items'], function($game) use ($search, $category, $tag) { if (empty($game['namespace'])) return false; if ($search && stripos($game['title'], $search) === false) return false; if ($category && strtolower($game['category']) !== strtolower($category)) return false; if ($tag && (!isset($game['tags']) || !in_array($tag, array_map('strtolower', $game['tags'])))) return false; return true; }); // Categories for filter $categories = array_unique(array_filter(array_map(function ($g) { return $g['category'] ?? ''; }, $json['items']))); sort($categories); // Start filter form $output = ''; // Display Grid Layout $output .= '