web-dev-qa-db-fra.com

Codes courts, tableaux HTML et plusieurs lignes

J'essaie de construire un shortcode qui appelle une table HTML avec un nombre fixe de colonnes et un nombre variable de lignes en fonction du contexte.

Il est difficile de gérer - ou même de construire, plusieurs tables encore et encore via HTML. Je n'ai eu aucun problème à créer des colonnes et des lignes fixes à l'aide de codes courts.

Pour illustrer par l'utilisation d'un exemple trivial:

Supposons que je construis un tableau avec 4 colonnes et 1 ligne.

Les 4 colonnes contiendront les en-têtes de tableau suivants:

  1. Nom du produit
  2. Quantité
  3. Prix ​​par article
  4. Prix ​​total

Et si je voulais créer plusieurs lignes (Produit 1, Produit 2, etc.), si possible, comment puis-je créer un shortcode qui me permette d'ajouter plus de lignes à ma guise - sans créer de shortcode séparé pour les lignes de tableau (été là).

3
VicePrez

passez vos données dans des variables simples délimitées par un caractère:

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

puis exploser dans un tableau et la sortie. Je ne me suis pas préoccupé du balisage de table ici, mais vous avez l’idée:

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