/**
* 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 .= '
';
// 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 - MatchkollenSkip to content