Ich habe soetwas mal mit einem Seiten-Template in Verbindung mit dem Plugin „Tabs Responsive“ gebaut, vielleicht hilft dir das weiter:
<?php
/**
* Template Name: Spiele
*
* Zeigt Spiele aller Mannschaften an
*
* @package VfB
* @subpackage VfB
*
*/
?>
<?php get_header(); ?>
<?php do_action( 'vfb_before_body_content' ); ?>
<div id="primary">
<div id="content" class="clearfix">
<?php
// Ausgabe buffern
ob_start();
// Ausgabe starten
while ( have_posts() ) : the_post();
get_template_part( 'content', 'page' );
endwhile;
// Ausgabe aus Buffer holen
$output = ob_get_contents();
// Buffer loeschen
ob_end_clean();
global $wpdb;
$teams = array('1', '2', 'ah', 'da', 'e', 'f1', 'f2', 'g');
$types = array("(M)", "(F)", "(P)", "(T)", "(S)", "(R)");
foreach($teams as $team)
{
$rows = $wpdb->get_results("SELECT
<code>team</code>,
<code>gegner</code>,
<code>ort</code>,
<code>confirmed</code>,
<code>fail</code>,
<code>gametype</code>,
date_format(datum, '%d.%m.%Y') as d,
date_format(datum, '%H:%i') as h
FROM
<code>" . $wpdb->prefix . "spiele</code>
where
<code>datum</code> > now()
and
<code>team</code> = '$team'
order by
<code>datum</code>");
if($rows !== NULL) //Wenn nicht Null
{
if(!empty($rows)) //Wenn Array nicht leer
{
$table = "<table class='spiele'>";
$vfb = "VfB XXXXXXXXXXXXXXXXX e.V.";
foreach ($rows as $row)
{
if ($row->ort == "H")
$spiel = $vfb . " - " . $row->gegner;
else
$spiel = $row->gegner . " - " . $vfb;
$datum = $row->d;
if ($row->confirmed)
$datum .= ", " . $row->h . " Uhr";
$type = $types[$row->gametype];
if ($row->fail)
$datum = "<span style='text-decoration: line-through;'>$datum</span>";
$table .= "<tr>
<td>$spiel</td>
<td>$datum $type</td>
</tr>\n";
}
$table .= "<tr>
<td colspan='2' style='font-size: 10pt; padding: 5px;'>
(M)eisterschaftsspiel, (F)reundschaftsspiel, (P)okalspiel, (T)urnier, (S)onstiger Termin
</td>
</tr>
</table>\n";
// Text im Tab ersetzen
$output = str_replace("##$team##",$table, $output);
}
else // Text im Tab ersetzen
$output = str_replace("##$team##","Keine aktuellen Termine vorhanden", $output);
}
else // Text im Tab ersetzen
$output = str_replace("##$team##","Keine aktuellen Termine vorhanden", $output);
}
echo $output;
?>
</div><!-- #content -->
</div><!-- #primary -->
<?php vfb_sidebar_select(); ?>
<?php do_action( 'vfb_after_body_content' ); ?>
<?php get_footer(); ?>
Der Aufbau und die Funktionsaufrufe können je nach Template unterschiedlich sein.
-
Diese Antwort wurde vor 4 Jahren, 10 Monaten von
bscu geändert.
Für den Zugriff auf die MySQL-Datenbank stellt dir WordPress ein eigenes Objekt zur Verfügung, das WordPress Database Access Abstraction Object, kurz WPDB. Direkte Zugriffe auf die Datenbank solltest du vermeiden und statt dessen das Objekt nutzen, um die Sicherheit deiner Website nicht zu gefährden.
Informationen zu WPDB findest du im Developer Handbook:
Class WPDB
Beachte dabei besonders den Abschnitt Protect Queries Against SQL Injection Attacks.
PHP-Scripte solltest du nicht auf Seiten unterbringen, auch wenn es dafür (teilweise obskure) Plugins gibt. Entweder verwendest du das Plugin Code Snippets, um kurze Code-Schnipsel einzufügen oder du schreibst dein eigenes Plugin, was eigentlich nicht besonders kompliziert ist. Du findest dazu eine Anleitung unter
https://developer.wordpress.org/plugins/
Hier dürfte auch wieder der Abschnitt über Plugin-Sicherheit besonders interessant sein.