ショートコードを改修する

WordPress

このブログで実装を進めてきたプラグインについて、以前の記事になりますが、ショートコードを実装しました。

その時に実装した内容はこちらの記事になります。

今回はその時に実装したショートコードプラグインを改造してみます。

まず、前回のコードはちなみに下記のようになっています。

/**
 * ショートコード
 */
function samplelistFunction()
{
    //データ一覧
    $disp_html =<<< EOL
<form action="" method="post">
<h2>データ一覧(ショートコードテスト)</h2>

<div class="wrap">

<table class="wp-list-table widefat striped posts">
    <tr>
        <th nowrap>ID</th>
        <th nowrap>名前</th>
        <th nowrap>登録日時</th>
    </tr>
EOL;

    global $wpdb;

    $tbl_name = $wpdb->prefix . 'sample_mst';
    $sql = "SELECT * FROM {$tbl_name} ORDER BY id;";
    $rows = $wpdb->get_results($sql);

    foreach($rows as $row) {

$disp_html .=<<<EOL
    <tr>
        <td>{$row->id}</td>
        <td>{$row->sample_name}</td>
        <td>{$row->create_date}</td>
        <td>
    </tr>
EOL;
    }

    $disp_html .=<<< EOL
</table>

</div>

</form>
EOL;

    return $disp_html;
}

add_shortcode('samplelist', 'samplelistFunction');

上記のコードを投稿側で使用するには、

[samplelist]

のように書きます。

その際に、ショートコードのパラメータ部分を記述し、プログラム側に値として渡す方法を書きます。

[samplelist2 text="TEST"]

プラグイン側の記述も同様にパラメータを受け取るように変更します。

/**
 * ショートコード(その2)
 */
function samplelistFunction2($param)
{
    $default_param = array(
        "text" => "default text"
    );
    
    $merged_param = shortcode_atts($default_param, $param);
    extract($merged_param);
    
    return esc_html($text);
}

add_shortcode('samplelist2', 'samplelistFunction2');

上記のように実装し、投稿時には

[samplelist2 text="テスト値"]

のようにショートコードを使うことができます。

実際には値を渡す他に、IDやプラグインの挙動を制御するパラメータを渡す用途があるので、設計によって仕様を決めて実装をします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です