HTML,CSS,PHP,ワードプレスカスタマイズ 技術情報資料

Welcart カートページの住所等の入力ページカスタマイズ

スポンサーリンク

Welcart カートページのカスタマイズは、結構見通しが悪い。
WelCartそのものの設計がやっぱり全然なってないとか、老年プログラマは思うのだった(笑)

それはおいといて・・・

カートページの入力は、メールアドレス部分、名前以降の部分にわかれている。

メールアドレス部分は、usc-shop/templates/cart/customer_info.php

住所の部分は、usc-shop/functions/template_func.php の function uesces_addressform

こういうのは、同じフォルダー/同じソースにまとめておくのがデバッグ効率がいいんだけど・・・

こういったところに初期のWELCARTは思い付きで作られているというのがわかる。

プラグインにしたってのは、絶対いいアイディアだと思うんだけどねぇ。

WelCartの致命傷は、とにかくプログラムの見通しが悪いってところだね。


Welcart カートページの住所等の入力 usces_filter_getShippingCharge フック関数で使える entry配列


以下 $entry[][] のキー名と内容例

reserve-pre_order_id:56ac3e594ee0c
reserve:Array
reserve-key:pre_order_id=56ac3e594ee0c
delivery-country:JP
delivery-pref:県名
delivery:Array
delivery-key:name1=テスト
delivery-key:name2=太郎
delivery-key:name3=テスト
delivery-key:name4=タロウ
delivery-key:zipcode=020-0000
delivery-key:address1=横浜市・・・
delivery-key:address2=3-24-555
delivery-key:address3=通販ビル4F
delivery-key:tel=1000-10-1000
delivery-key:fax=
delivery-key:country=JP
delivery-key:pref=県名
delivery-key:delivery_flag=0
delivery-key:mailaddress1=メールアドレス
delivery-key:mailaddress2=メールアドレス
customer-mailaddress1:メールアドレス
customer-name1:テスト
customer-name2:太郎
customer-name3:テスト
customer-name4:タロウ
customer-zipcode:020-0000
customer-pref:県名
customer-address1:横浜市・・・
customer-address2:3-24-555
customer-address3:通販ビル4F
customer-tel:1000-10-1000
customer-fax:
customer-key:mailaddress1=メールアドレス
customer-key:mailaddress2=メールアドレス
customer-key:password1=
customer-key:password2=
customer-key:name1=テスト
customer-key:name2=太郎
customer-key:name3=テスト
customer-key:name4=タロウ
customer-key:zipcode=020-0000
customer-key:address1=横浜市・・・
customer-key:address2=3-24-555
customer-key:address3=通販ビル4F
customer-key:tel=1000-10-1000
customer-key:fax=
customer-key:country=JP
customer-key:pref=県名
cart:Array
cart-key:0=Array
cart-key:1=Array
order-note:
order-delivery_method:0
order-delivery_date:指定できません
order-delivery_time:配達指定なし
order-payment_name:銀行振込
order-shipping_charge:1223
order-total_full_price:9475
condition:Array
item_total_price:
order-getpoint:0
order-usedpoint:
order-discount:0
order-shipping_charge:1223
order-cod_fee:0
order-tax:702
order-taio:
order-receipt:
order-admin:
order-key:usedpoint=
order-key:total_items_price=7550
order-key:discount=0
order-key:shipping_charge=1223
order-key:cod_fee=0
order-key:payment_name=銀行振込
order-key:delivery_method=0
order-key:delivery_date=指定できません
order-key:delivery_time=配達指定なし
order-key:total_full_price=9475
order-key:note=
order-key:tax=702
order-key:delidue_date=
order-key:cus_id=
order-key:total_price=8773
order-key:getpoint=0
means:
essential:
position:
value:
reserve-key:56ac3e594ee0c

phpの配列要素の表示のさせ方


if(is_array($entry['reserve'])) {
	foreach($entry['reserve'] as $k => $v) {
		fwrite($fp, "reserve-key:".$k."=".$v."\n"  );
	}
}

usces_filter_getShippingCharge フック関数で使える変数検査モジュール


もちろん、wp のフォルダーは書き込み許可にして trace.txt を一度作らせて、おくこと。
少なくとも、買い物かごの中身の取り出しは、usces_filter_getShippingCharge フック以外でも使える。
global $usces; が味噌だ。

add_filter( 'usces_filter_getShippingCharge', 'or_getShippingCharge', 10, 3);
function or_getShippingCharge($charge, $cart, $entry) {
	global $usces;
	$itemnumber = $usces->get_total_quantity( $cart ); // 合計個数
	$japcustompost = $entry['delivery']['pref']; // 配送先の県名
	$haisouhouhou  = $entry[‘order’][‘delivery_method’];

		//配送方法ID
		$d_method_id = $entry['order']['delivery_method'];
		//配送方法index
		//$d_method_index = $this->get_delivery_method_index($d_method_id);

$myfile = ABSPATH."trace.txt";
$fp = fopen($myfile, "w");
fwrite($fp, "合計個数:".$itemnumber."\n" );
fwrite($fp, "配送先県名:".$japcustompost."\n");
fwrite($fp, "配送方法:".$haisouhouhou."\n"  );
fwrite($fp, "配送ID:".$d_method_id."\n"  );

	// functions.php usces_get_cart_rows より抜粋
	global $usces_gp;
	$cart = $usces->cart->get_cart();
	$usces_gp = 0;
	$res = '';
	$itemNO=0;
	for($i=0; $i<count($cart); $i++) { 
		$cart_row = $cart[$i];
		$post_id  = $cart_row['post_id'];
		$sku      = $cart_row['sku'];
		$sku_code = esc_attr(urldecode($cart_row['sku']));
		$quantity = $cart_row['quantity'];
		$options  = $cart_row['options'];
		$advance  = $usces->cart->wc_serialize($cart_row['advance']);
		$itemCode = $usces->getItemCode($post_id);
		$itemName = $usces->getItemName($post_id);
		$cartItemName    = $usces->getCartItemName($post_id, $sku_code);
		$itemRestriction = $usces->getItemRestriction($post_id);
		$skuPrice        = $cart_row['price'];
		$skuZaikonum     = $usces->getItemZaikonum($post_id, $sku_code);
		$stockid         = $usces->getItemZaikoStatusId($post_id, $sku_code);
		$stock           = $usces->getItemZaiko($post_id, $sku_code);
		$red             = (in_array($stock, array(__('sellout','usces'), __('Out Of Stock','usces'), __('Out of print','usces')))) ? 'class="signal_red stock"' : 'class="stock"';
		$pictid = (int)$usces->get_mainpictid($itemCode);
$itemNO++;
fwrite($fp, "-----".$itemNO."-----\n"  );
fwrite($fp, "post_id:".$post_id."\n"  );
fwrite($fp, "sku:".$sku."\n"  );
fwrite($fp, "sku_code:".$sku_code."\n"  );
fwrite($fp, "quantity:".$quantity."\n"  );
fwrite($fp, "options:".$options."\n"  );
fwrite($fp, "advance:".$advance."\n"  );
fwrite($fp, "itemCode:".$itemCode."\n"  );
fwrite($fp, "itemName:".$itemName."\n"  );
fwrite($fp, "cartItemName:".$cartItemName."\n"  );
fwrite($fp, "itemRestriction:".$itemRestriction."\n"  );
fwrite($fp, "skuPrice:".$skuPrice."\n"  );
fwrite($fp, "skuZaikonum:".$skuZaikonum."\n"  );
fwrite($fp, "stockid:".$stockid."\n"  );
fwrite($fp, "stock:".$stock."\n"  );
fwrite($fp, "red:".$red."\n"  );
fwrite($fp, "pictid:".$pictid."\n"  );

		if ( empty($options) ) {
			$optstr =  '';
			$options =  array();
		}
		$optnNO=0;
		if( is_array($options) && count($options) > 0 ){
			$optstr = '';
			foreach($options as $key => $value){
				if( !empty($key) ) {
					$key = urldecode($key);
					if(is_array($value)) {
						$c = '';
						$optstr .= esc_html($key) . ' : '; 
						foreach($value as $v) {
							$optstr .= $c.nl2br(esc_html(urldecode($v)));
							$c = ', ';
						}
						$optstr .= "<br />\n"; 
					} else {
						$optstr .= esc_html($key) . ' : ' . nl2br(esc_html(urldecode($value))); 
					}
					$optnNO++;
					fwrite($fp, $optnNO.".options-key:".$key."=".$optstr."\n"  );

				}
			}
		}
	}
	fwrite($fp, "-----"."-----"."-----\n"  );
	
fwrite($fp, "reserve-pre_order_id:".$entry['reserve']['pre_order_id']."\n"  );
fwrite($fp, "reserve:".$entry['reserve']."\n"  );
if(is_array($entry['reserve'])) {
	foreach($entry['reserve'] as $k => $v) {
		fwrite($fp, "reserve-key:".$k."=".$v."\n"  );
	}
}

fwrite($fp, "delivery-country:".$entry['delivery']['country']."\n"  );
fwrite($fp, "delivery-pref:".$entry['delivery']['pref']."\n"  );
fwrite($fp, "delivery:".$entry['delivery']."\n"  );
if(is_array($entry['delivery'])) {
	foreach($entry['delivery'] as $k => $v) {
		fwrite($fp, "delivery-key:".$k."=".$v."\n"  );
	}
}

fwrite($fp, "customer-mailaddress1:".$entry['customer']['mailaddress1']."\n"  );
fwrite($fp, "customer-name1:".$entry['customer']['name1']."\n"  );
fwrite($fp, "customer-name2:".$entry['customer']['name2']."\n"  );
fwrite($fp, "customer-name3:".$entry['customer']['name3']."\n"  );
fwrite($fp, "customer-name4:".$entry['customer']['name4']."\n"  );
fwrite($fp, "customer-zipcode:".$entry['customer']['zipcode']."\n"  );
fwrite($fp, "customer-pref:".$entry['customer']['pref']."\n"  );
fwrite($fp, "customer-address1:".$entry['customer']['address1']."\n"  );
fwrite($fp, "customer-address2:".$entry['customer']['address2']."\n"  );
fwrite($fp, "customer-address3:".$entry['customer']['address3']."\n"  );
fwrite($fp, "customer-tel:".$entry['customer']['tel']."\n"  );
fwrite($fp, "customer-fax:".$entry['customer']['fax']."\n"  );
if(is_array($entry['customer'])) {
	foreach($entry['customer'] as $k => $v) {
		fwrite($fp, "customer-key:".$k."=".$v."\n"  );
	}
}


fwrite($fp, "cart:".$cart."\n"  );
if(is_array($cart)) {
	foreach($cart as $k => $v) {
		fwrite($fp, "cart-key:".$k."=".$v."\n"  );
	}
}


fwrite($fp, "order-note:".$entry['order']['note']."\n"  );
fwrite($fp, "order-delivery_method:".$entry['order']['delivery_method']."\n"  );
fwrite($fp, "order-delivery_date:".$entry['order']['delivery_date']."\n"  );
fwrite($fp, "order-delivery_time:".$entry['order']['delivery_time']."\n"  );
fwrite($fp, "order-payment_name:".$entry['order']['payment_name']."\n"  );
fwrite($fp, "order-shipping_charge:".$entry['order']['shipping_charge']."\n"  );
fwrite($fp, "order-total_full_price:".$entry['order']['total_full_price']."\n"  );

fwrite($fp, "condition:".$entry['condition']."\n"  );
fwrite($fp, "item_total_price:".$item_total_price."\n" );

fwrite($fp, "order-getpoint:".$entry['order']['getpoint']."\n"  );
fwrite($fp, "order-usedpoint:".$entry['order']['usedpoint']."\n"  );
fwrite($fp, "order-discount:".$entry['order']['discount']."\n"  );
fwrite($fp, "order-shipping_charge:".$entry['order']['shipping_charge']."\n"  );
fwrite($fp, "order-cod_fee:".$entry['order']['cod_fee']."\n"  );
fwrite($fp, "order-tax:".$entry['order']['tax']."\n"  );

fwrite($fp, "order-taio:".$entry['order']['taio']."\n"  );
fwrite($fp, "order-receipt:".$entry['order']['receipt']."\n"  );
fwrite($fp, "order-admin:".$entry['order']['admin']."\n"  );

if(is_array($entry['order'])) {
	foreach($entry['order'] as $k => $v) {
		fwrite($fp, "order-key:".$k."=".$v."\n"  );
	}
}


fwrite($fp, "means:".$entry['means']."\n"  );
fwrite($fp, "essential:".$entry['essential']."\n"  );
fwrite($fp, "position:".$entry['position']."\n"  );
fwrite($fp, "value:".$entry['value']."\n"  );
if(is_array($entry['value'])) {
	foreach($entry['value'] as $k => $v) {
		fwrite($fp, "value-key:".$k."=".$v."\n"  );
	}
}

if(is_array($entry['reserve'])) {
	foreach ( $entry['reserve'] as $key => $value ) {
		fwrite($fp, "reserve-key:".$value."\n"  );
	}
}

if(is_array($entry['custom_order'])) {
	foreach ( $entry['custom_order'] as $key => $value ) {
		fwrite($fp, "custom_order-key:".$value."\n"  );
	}
}

if(is_array($entry['custom_customer'])) {
	foreach ( $entry['custom_customer'] as $key => $value ) {
		fwrite($fp, "custom_customer-key:".$value."\n"  );
	}
}

if(is_array($entry['custom_delivery'])) {
	foreach ( $entry['custom_delivery'] as $key => $value ) {
		fwrite($fp, "custom_delivery-key:".$value."\n"  );
	}
}

fclose($fp);

	$charge = 1223;
	return $charge;

}

スポンサーリンク

スポンサーリンク

よく使うタグ

・float クリア
<br clear="all"><div style="clear:both;" class="clearfix"></div>
・角丸め
round-radius
border-radius:5px; -webkit-border-radius:10px; -moz-border-radius:10px;
・div box
overflow:scroll;min-width:300px;max-width:300px;min-height:300px;max-height:300px;
・TEXTAREAリサイズ
resize: vertical;
・サイトURL
home_url() // http://…
if(site_url()==home_url){
$shorturl_yuzu_path = substr(ABSPATH,0,strpos( ABSPATH, substr(site_url(),strlen(home_url()) ) ) ).’/’;
}else{
$shorturl_yuzu_path = ABSPATH.’/’;
}
// /var/…
・WP HOME URL
site_url() // http://…/wp
ABSPATH // /var/…/wp
・プラグイン(自分のDIR追加必要)
plugins_url() // http://…/plugins
WP_PLUGIN_URL // http://…/plugins
WP_PLUGIN_DIR // /var/…/plugins
・使用中のテーマ
get_template_directory_uri() // http://…/theme/xx
get_template_directory() // /var/…/theme/xx
・wp-content
content_url() // http://…/wp-content
WP_CONTENT_DIR // /var/…/wp-content
・画像URLからDIR変換
$pctdir=str_replace(content_url(), WP_CONTENT_DIR,$pcturl);
・パス名分解
$pathData = pathinfo($file);
echo $pathData["dirname"]; // /var/~
echo $pathData["filename"]; // xxx
echo $pathData["extension"]; // txt
echo $pathData["basename"]; // xxx.txt
・画像サイズ
list($width,$height) = getimagesize($url);
if(has_post_thumbnail()){
$thumbnail_id = get_post_thumbnail_id();
$thumbnail_img = wp_get_attachment_image_src( $thumbnail_id , ‘full’ );
$src = $image[0]; //url
$width = $image[1]; //横幅
$height = $image[2]; //高さ
・画像サイズ比率
list($src_w,$src_h) = getimagesize($file);
$dst_w = 600;$dst_h = 0;
$dst_h = ($dst_w!=0)?(intval(($src_h*$dst_w)/$src_w )):(($dst_h!=0)?(intval(($src_w*$dst_h)/$src_h)):0);
・疑似要素順
link visited hover active


特殊文字
シングルクォート : &#39;
ダブルクォート : &quot;
WP設定内表示前処理(htmlタグ許可項目)
$str = str_replace(‘<','&lt;' ,$str);
$str = str_replace(‘>’,’&gt;’ ,$str);
$str = str_replace(‘\”‘,’&quot;’,$str);
$str = str_replace(“\'”,’&#39;’ ,$str);
WO設定項目表示前処理(htmlタグ許可項目)
$str = str_replace(‘\”‘,'”‘,$str);
$str = str_replace(“\'”,”‘”,$str);
・テーマ
get_theme_root_uri()
get_theme_root()
・WP 情報
get_bloginfo( $show )
・Wp config FTP 情報 設置
define( ‘FTP_HOST’, ‘host’ );
define( ‘FTP_USER’, ‘id’ );
define( ‘FTP_PASS’, ‘pw’ );
define( ‘FTP_SSL’, false );
弾に使う
placeholder:ユーザー入力補助

カテゴリー

jQuery ボタンを押しても反応しない

jQuery ボタンを押しても反応しない jQuery の click イベントを使ってボタンを押したら alert を表示する簡単な仕様なのになにも反応しない。一瞬はまってしまうことって・・・ありますよね?例えば、こう書きます。popup.

WP パーマリンク リダイレクト インターナルサーバーエラー

WP パーマリンク リダイレクト インターナルサーバーエラー WP パーマリンクのリダイレクトがインターナルサーバーエラーを起こすようになった。ユーザーさんのサイトなので「なにをしたか」わからない。WP パーマリンク リダイレクト インターナルサーバーエラーのい

Javascript から CGIを呼び出すのに便利な XMLHttpRequest 覚書

Javascript から CGIを呼び出すのに便利な XMLHttpRequest 覚書 XMLHttpRequestは、Javascript から サーバー上のCGIを呼び出す時に便利なコマンドだ。XMLHttpRequestをざっくり書いておく。CGIへコマンドを送る(JavaScri

Unchecked runtime.lastError: The message port closed before a response was received.の解決策

Unchecked runtime.lastError: The message port closed before a response was received.の解決策 Unchecked runtime.lastError: The message port closed before a response was received.未チェックのruntime.la

ロボフォームのようなパスワードを保存する拡張機能

ロボフォームのようなパスワードを保存する拡張機能 ロボフォームのようなパスワードを保存するJavaScritpを書こうと思った。ロボフォームは、wwwサイトのログイン情報などを保存できるブラウザの拡張機能だ。ところが、バージョンが上がるたび使い勝手が

flexbox インストールなど面倒なことなしにDIV BOX を横に並べるクラス

flexbox インストールなど面倒なことなしにDIV BOX を横に並べるクラス flexbox は、div の box を横に並べるためのブラウザに標準装備されてるクラス。乱暴な言い方すればそういうことです。現場では細かいことはどうでもよくて、とにかく簡単に DIV BOX を横