WebLabyrinth site image

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

Navi box open

WordPressプラグイン「Welcart」で登録した送料を出力するショートコード

Welcartに登録した送料を一覧で表示させたかったんです

仕事で小規模なショップサイトを立ち上げることがありまして、WordPressの便利なプラグイン「Welcart」を用いてサイト構築をしていたのですが、設定画面で各地域ごとに送料を入力しているときに、「各送料を表から見えるページに表示させたいけど、一度入力した情報をもう一度ページ入力画面でインプットするのはめんどくさいし、スマートじゃないなぁ。」と思っていました。

二回以上同じものを入力すると入力ミスが発生する可能性もありますし、何より送料が変更した時にWelcart側の設定と表に表示させるHTMLを二度修正する必要もあります。
暇な時にやれるのであればOKなのですが、忙しい時にそんな事はあまりやりたくないですよね。
そこで、Welcartの設定ページで入力した値を一覧に表示させる関数か何か用意されてないかな?と思ったのですが、私の探し方が悪かったのか見つけることができませんでした。

無いの様なので作りました

後々のことを考えたら、作ったほうがいいよね?ということでプログラムを組んでみました。
以下のソースをWordPressで自分が使用しているテーマ内にあるfunctions.phpに追加してください。

// Welcart に登録されている送料をテーブルで出力する関数

function shipping_fee_table($id) {

	global $wpdb;

	$table_name = $wpdb->options;
	$sql_text = 'SELECT * FROM ' . $table_name . ' where option_name="usces";';
	$results = $wpdb->get_results($sql_text);
	$results_usces = $results[0]->option_value;// シリアライズされているので戻す
	$option_usces_object = unserialize($results_usces);// シリアライズから戻したオブジェクト
	$shipping_charge_object = $option_usces_object["shipping_charge"];// 全送料が収納されている

	$shipping_name = $shipping_charge_object[$id]["name"];
	$shipping_array = $shipping_charge_object[$id]["JP"];

	$html = "";

	$html .= '<table id="shipping_fee_id_' . $id . '" class="shipping_fee_table">
	<caption>' . $shipping_name . ' (円)</caption>
	<tr>
		<th>地域</th>
		<th>送料</th>
	</tr>' . PHP_EOL;

	foreach ( $shipping_array as $key => $value ) {

		$html .= '	<tr>
		<td>' . $key . '</td>
		<td>'
			. number_format($value)// 数値にカンマを付ける
		. '</td>
	</tr>' . PHP_EOL;

	}

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

	return $html;

}


function shipping_fee_table_shortcode($atts) {

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

	return shipping_fee_table($id);

}
add_shortcode("shipping_fee", "shipping_fee_table_shortcode");

使い方

投稿及びページの編集エディタ内で送料一覧を表示させたい位置に[shipping_fee id=”1″]とショートコードを入力してください。公開されたページ側に送料が北海道から沖縄まで表示されていると思います。

オプションの値について

ショートコード[shipping_fee id=”1″]のidにあたる部分ですが、これはWelcartに登録されている送料のIDを指定しています。送料のIDは恐らく登録された順番で管理されているかと思いますので、自分で登録した順番を思い出しながら数字を指定してください。一番最初に登録した送料を表示したい場合は[shipping_fee id=”0″]としてください。0が一番目になります。

なおデザイン用にCSSを書く場合は、shipping_fee_tableというclass名を付与するようにしていますので、お好みでどうぞ。

動作環境

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

この記事を書いた人

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

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

Trackback URL

https://weblabyrinth.net/wordpress-plugin-display-the-shipping-fee-registered-with-welcart/trackback/

コメントを残す

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

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