WebLabyrinth site image

WebLabyrinthWebに関する様々なメモや個人的実験を行うサイトです

Navi box open

WordPressプラグイン「Welcart」で登録した商品のオプション内容を出力するショートコード

Welcartの商品に設定したオプション内容を出力したかった

前回の記事と同様に、WordPressのショッピングカトープラグインである「Welcart」を使用しているときに、商品で設定したオプションを投稿内に出力できればと思いショートコードを作ってみました。

使用する場合は以下のソースをWordPressで自分が使用しているテーマ内にあるfunctions.phpに追加してください。

// Welcart に登録されている商品オプション内容を出力する関数

function output_product_options($order = false) {

    $html = "";

    $meta_values = get_post_meta( get_the_ID(), "_iopt_", false );// 商品ページIDの "_iopt_" メタ情報(オプションの内容)を取得する

    if ($order) {// 指定出力位置が存在するならその配列のみとする

        $temp_array = array();
        $temp_array[0] = $meta_values[$order];
        $meta_values = $temp_array;// 取り出した要素のみ入った配列で上書き

    }

    $html .= '<div class="option_contents">' . PHP_EOL;

    foreach ( $meta_values as $array ) {

        $html .= '	<p class="option_name">' . $array["name"] . '</p>' . PHP_EOL;

        $this_means = (int) $array["means"];
        $value_array = explode("\n", $array["value"]);

        // テキスト及びテキストボックスは空欄必須なので $array["value"] != "" でも良いかもしれない

        if ( count($value_array) !== 0 && $this_means === 0 || $this_means === 1 || $this_means === 3 || $this_means === 4 ) {

            $html .= '	<ul class="option_list">' . PHP_EOL;

            foreach ( $value_array as $value ) {

                $html .= '		<li>' . $value . '</li>' . PHP_EOL;

            }

            $html .= '	</ul>' . PHP_EOL;

        }

    }

    $html .= '</div>' . PHP_EOL;

    if ( count($meta_values) !== 0 ) {

        return $html;

    }

}


// ↑ の関数 output_product_options() を投稿内で使用するためのショートコード

function output_product_options_shortcode($atts) {

    extract( shortcode_atts(
        array(
            "order" => 0,
        ), $atts)
    );

    return output_product_options((int) $order);

}
add_shortcode("product_options", "output_product_options_shortcode");

 

使い方

投稿及びページの編集エディタ内でオプション内容を表示させたい位置に[product_options order=”1″]とショートコードを入力してください。商品ページで設定したオプション内容が表示されていると思います。

オプションの値について

ショートコード[product_options order=”1″]のorderにあたる部分は、これは商品に登録されているオプションの番号を指定しています。オプションは複数登録可能なので、登録したオプション内容を選んで表示する場合に設定してください。オプションを設定した順番となっているので、自分で登録した順番を思い出しながら数字を指定してください。ちなみに最初に登録したオプション内容を表示する場合は[product_options order=”0″]としてください。0が一番目のオプションの指定で1が二番目の指定になります。

またオプション値を設定せず[product_options]と入力したら全てのオプションが表示されます。

動作環境

WordPress: バージョン 4.9.4
Welcart e-Commerce バージョン 1.9.9

この記事を書いた人

ニックネーム: SHIBAZAKI
ブログ: https://weblabyrinth.net

北海道旭川市でweb関係のお仕事をしています。

Trackback URL

https://weblabyrinth.net/short-code-for-outputting-product-options-registered-with-wordpress-plug-in-welcart/trackback/

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください