web-dev-qa-db-fra.com

Tableau HTML de shortcode avec plusieurs paramètres

J'ai trouvé ce problème et je ne peux tout simplement pas le résoudre. J'ai parcouru un long chemin avec tous les calculs derrière la table et la table étant mise en place à la suite d'une fonction derrière le shortcode. Ensuite, j'ai également réussi à rendre la table variable en utilisant les attributs attribués à un shortcode. Mais ce qui compléterait ma fonction est la possibilité de transmettre plusieurs entrées au même shortcode et à ces entrées formant une belle table. J'ai essayé d'utiliser plusieurs codes abrégés, mais le mieux serait que tout puisse être intégré dans un code abrégé. C'est probablement un peu vague maintenant, laissez-moi clarifier les choses en fournissant du code.

function test( $atts ) {

// Attributes
$atts = shortcode_atts(
    array(
        'investment' => '1',
        'coinamount' => '0.5',
        'coin' => 'BTC',
        'currency' => 'EUR',
    ),
    $atts,
    'investment'
);

//Declaring all my variables
$coinworth = get_coin_worth($atts['coin'], $atts['currency']);
$currencyworth = get_currency_worth($atts['coin'], $atts['currency']);
$coinname = get_coin_name($atts['coin']);
$currencyname = get_currency_name($atts['currency']);
$investment = $atts['investment'];
$coinamount = $atts['coinamount'];
$portfolioworth = $coinamount*$coinworth;
$result = $portfolioworth - $investment;
$result = number_format((float)$result, 2, '.', '');

//Creating the table 
$table = <<<EOD
        <h1 style="text-align:center">Uw Portfolio</h1>
        <table style="width:100%">
            <tr>
                <th>Invested Currency</th>
                <th>Investment Worth</th>
                <th>Coin amount</th>
                <th>Recent Portfolioworth</th>
                <th>Result</th>
            </tr>
            <tr>
                <td>$currencyname</td>
                <td>$investment</td>
                <td>$coinamount</td>
                <td>$coinworth</td>
                <td $style$result</td>
            </tr>
        </table>
EOD; 
return $table;
}

Comme vous pouvez le constater, c’est une très grosse fonction, prenez le temps de la comprendre. Maintenant, j'ai vu cet article , mais comme vous le voyez, j'ai plusieurs entrées de données pour chaque ligne et je ne peux tout simplement pas comprendre comment les combiner complètement comme je le fais actuellement.

Quelqu'un a une idée? Vous allez m'aider des charges!

Sincères amitiés

2
D. Bleumink

J'ai créé un exemple de la façon dont vous pouvez atteindre ce que vous êtes après:

Vous pouvez l'utiliser comme ceci:

function itable_shortcode( $atts ) { extract( shortcode_atts( array( 'data' => 'none', ), $atts ) ); $data = explode('#',$data); $output = ""; foreach ($data as $value) { $output .= '<tr>'; $in_value = explode(';',$value); // next step is check if exist or is the type you want like integer or string $investment = $in_value[0]; $coin = $in_value[1]; $coinamount = $in_value[2]; $currency = $in_value[3]; //Declaring all my variables $coinworth = get_coin_worth($coin, $currency); $currencyworth = get_currency_worth($coin,$currency); $coinname = get_coin_name($coin); $currencyname = get_currency_name($currency); $portfolioworth = $coinamount*$coinworth; $result = $portfolioworth - $investment; $result = number_format((float)$result, 2, '.', ''); $output .= '<td>'.$currencyname.'</td>'; $output .= '<td>'.$investment.'</td>'; $output .= '<td>'.$coinamount.'</td>'; $output .= '<td>'.$coinworth.'</td>'; $output .= '<td>'.$result.'</td>'; $output .= '</tr>'; } //Creating the table $table = <<<EOD <h1 style="text-align:center">Uw Portfolio</h1> <table style="width:100%"> <tr> <th>Invested Currency</th> <th>Investment Worth</th> <th>Coin amount</th> <th>Recent Portfolioworth</th> <th>Result</th> </tr> $output </table> EOD; return $table; } function itable_shortcodes_init() { add_shortcode('itable', 'itable_shortcode'); } add_action('init', 'itable_shortcodes_init');

1
Drupalizeme