it-swarm.com.de

Shortcodes, HTML-Tabellen und mehrere Zeilen

Ich versuche einen Shortcode zu erstellen, der eine HTML-Tabelle mit einer festen Anzahl von Spalten und einer variablen Anzahl von Zeilen aufruft, abhängig vom Kontext.

Es ist schwierig, mehrere Tabellen über HTML zu verwalten oder sogar zu erstellen. Ich hatte keine Probleme damit, feste Spalten und Zeilen über Shortcodes zu erstellen.

Zur Veranschaulichung anhand eines einfachen Beispiels:

Nehmen wir an, ich baue eine Tabelle mit 4 Spalten und 1 Zeile.

Die 4 Spalten enthalten die folgenden Tabellenüberschriften:

  1. Produktname
  2. Menge
  3. Preis pro Stück
  4. Gesamtpreis

Was ist, wenn ich mehrere Zeilen (Produkt 1, Produkt 2 usw.) erstellen möchte, wenn dies überhaupt möglich ist? Wie kann ich einen Shortcode erstellen, mit dem ich nach Belieben weitere Zeilen hinzufügen kann, ohne einen separaten Shortcode für Tabellenzeilen zu erstellen? (war dort).

3
VicePrez

übergeben Sie Ihre Daten in einzelnen Variablen, die durch ein Zeichen begrenzt sind:

[myproduct cols="name,quantity,price" data="name1,5,2.00,name2,3,3.25"]

dann zerlegen Sie es in ein Array und geben es aus. Ich habe mich hier nicht mit Tabellenmarkierungen beschäftigt, aber Sie haben die Idee:

function myproduct_func( $atts ) {
    extract( shortcode_atts( array(
        'cols' => 'none',
        'data' => 'none',
    ), $atts ) );

    $cols = explode(',',$cols);
    $data = explode(',',$data);
    $total = count($cols);

    $output = "";
    foreach($cols as $col):
        $output .= "| {$col} ";
    endforeach;

    $output .= "<br>";

    $counter = 1;
    foreach($data as $datum):
        $output .= "| {$datum} ";
        if($counter%$total==0):
            $output .= "<br>";
        endif;
        $counter++;
    endforeach;

    return $output;

}
add_shortcode( 'myproduct', 'myproduct_func' );
3
Milo