/** * Shortcode-funktion som hämtar och visar dagens matcher samt en widget för varje match. */ function mk_show_todays_matches() { // 1. Anslut till din externa databas (samma sätt som i ditt plugin). $stats_db = new wpdb( MK_TOM_EXTERNAL_DB_USER, MK_TOM_EXTERNAL_DB_PASSWORD, MK_TOM_EXTERNAL_DB_NAME, MK_TOM_EXTERNAL_DB_HOST ); // 2. Hämta dagens datum i 'YYYY-mm-dd'-format. $today = date('Y-m-d'); // 3. Hämta matcherna för idag från tabellen "matches" i din externa databas. // Du kan justera tabellnamnet om det inte heter "matches" i din DB. // Filtrera efter kolumnen "match_date" för att få fram endast dagens matcher. $query = $stats_db->prepare("SELECT * FROM matches WHERE match_date = %s", $today); $todays_matches = $stats_db->get_results($query); // Om det inte finns några matcher idag, returnera ett kort meddelande. if (!$todays_matches) { return "

Inga matcher spelas idag.

"; } // 4. För varje match – visa widgetkod samt en länk till matchinlägget (om det finns ett). // För att länka till rätt inlägg behöver vi hitta WP-postens ID med hjälp av fixture_id. $output = '
'; foreach ($todays_matches as $match) { // Använd din widget-funktion från pluginet (eller kopiera in om den är privat) // I ditt plugin heter den mk_tom_generate_widget_code($fixture_id). // Men du kan också skriva ut motsvarande kod direkt, t.ex.: $widget_code = '
'; // 4a. Hitta matchinläggets ID (om något). // Du har redan en funktion mk_tom_match_post_exists($fixture_id) som returnerar true/false, // men här behöver vi själva ID:t för att kunna länka vidare. // Nedan gör vi en WP_Query för att hämta inlägget med meta_key = '_fixture_id' och meta_value = $match->fixture_id. $args = array( 'post_type' => 'post', 'meta_key' => '_fixture_id', 'meta_value' => $match->fixture_id, 'fields' => 'ids', 'posts_per_page' => 1 ); $wp_query = new WP_Query($args); // Om inlägget existerar, spara dess ID i $post_id if ($wp_query->have_posts()) { $post_id = $wp_query->posts[0]; $permalink = get_permalink($post_id); $link_html = 'Gå till matchinlägget'; } else { // Om inget inlägg finns, kan du välja att inte visa någon länk $link_html = 'Inget inlägg skapat'; } // 5. Bygg ihop en sektion för varje match: widget + knapp/länk $output .= '
'; $output .= '

' . esc_html($match->home_team) . ' vs ' . esc_html($match->away_team) . ' (' . esc_html($match->match_date) . ')

'; $output .= '
' . $widget_code . '
'; $output .= ''; $output .= '
'; } $output .= '
'; // Returnerar all HTML till WordPress, som sedan skrivs ut på sidan där shortcoden finns. return $output; } /** * Registrera vår shortcode [mk_todays_matches]. */ function mk_register_todays_matches_shortcode() { add_shortcode('mk_todays_matches', 'mk_show_todays_matches'); } add_action('init', 'mk_register_todays_matches_shortcode'); Registrera - Matchkollen

Registrera