web-dev-qa-db-ja.com

複数のパラメーターを持つショートコードからのHTMLテーブル

この問題を解決しましたが、解決できません。私は、テーブルの背後にあるすべての数学と、ショートコードの背後にある関数の結果としてテーブルが消されて、長い道のりを歩んできました。次に、ショートコードに割り当てられた属性を使用して、テーブル変数を作成しました。しかし、私の機能を完成させるのは、いくつかの入力を同じショートコードに渡し、それらの入力をNiceテーブルを形成する機能です。いくつかのショートコードを使用してみましたが、すべてが1つのショートコードに収まるようにした方が良いでしょう。おそらく今は少し漠然としているので、いくつかのコードを提供することで事態を明確にします。

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;
}

ご覧のとおり、これは非常に大きな機能です。少し時間をかけて理解してください。今、私は この投稿 を見てきましたが、ご覧のように、すべての行に複数のデータ入力があり、今のようにそれらをすべて結合する方法を把握できません。

誰でもアイデアはありますか?あなたは私がロードするのを手伝ってくれるでしょう!

敬具

2
D. Bleumink

私はあなたがあなたが何であるかを達成する方法の例を作成しました:

次のように使用できます。

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