『ライトニング市場』開発Lab

はじめに

 このショートコードは、こんな商品紹介が簡単にできちゃうツールです。

 このページには詳しい解説等は載せません。詳細に関しては別途記事にしようかと思いますが、どなたか有志の方がいれば解説記事書いて頂けると助かります(笑)

 こちらのページは、常に新しいコードを書く場所にします。

 簡単な説明ではありますが、概要は上の記事で分かります。

SPONSORED LINK

動作条件

 下記を導入していることが前提です。解説は省略しますが、関連する記事がある場合はリンクを貼っておきます。

WORDPRESS

PostSnippets

 WordPressのプラグイン

Google Chrome

Lightning Blog Tool

 Google Chromeの拡張機能

Lightning Blog Toolの設定

公開version: 0.45
公開日: 2018/5/23

ver 0.3.0時のオプション画面のキャプチャ
ver 0.3.0時のオプション画面のキャプチャ

Amazon用

Type: ページ移動

メニュー名
クリックすると内容全部が選択状態
Lightning市場(Amazon)ver1.10
対象アドレス
クリックすると内容全部が選択状態
*://*.amazon.co.jp/*
クリックすると内容全部が選択状態
[clip][LT市場][pre] url : "%urlc%", image : "%dom:src:id:landingImage%%dom:src:id:imgBlkFront%%dom:src:id:js-masrw-main-image%" , shop_name : "%ht:%n:%dom:text:id:brandByline_feature_div%%dom:text:id:byline%:%:%", search_links : true, name : "%ht:%n:%dom:text:id:productTitle%:%:%%ht:%n:%dom:text:id:btAsinTitle%:%:%", key : "%ht:%n:%dom:text:id:productTitle%:%:%%ht:%n:%dom:text:id:btAsinTitle%:%:%", [/pre][/LT市場]

楽天用

Type: ページ移動

メニュー名
クリックすると内容全部が選択状態
Lightning市場(楽天)ver1.10
対象アドレス
クリックすると内容全部が選択状態
*://*.rakuten.co.jp/*
クリックすると内容全部が選択状態
[clip][LT市場][pre] url : "%urlc%", image : "%metaimg%", shop_name : "%ht:%meta:property__apprakuten:shop_name%:%", name : "%ht:%n:%dom:text:class:item_name%:%:%%ht:%n:%dom:text:class:topProduct__title%:%:%", key : "%ht:%n:%dom:text:class:item_name%:%:%%ht:%n:%dom:text:class:topProduct__title%:%:%", [/pre][/LT市場]

Yahoo!ショッピング用

Type: ページ移動

メニュー名
クリックすると内容全部が選択状態
Lightning市場(Yショップ)ver1.00
対象アドレス
クリックすると内容全部が選択状態
*://*.shopping.yahoo.co.jp/*
クリックすると内容全部が選択状態
[clip][LT市場][pre] url : "%urlc%", image : "%metaimg%", shop_name : "%ht:%meta:property__twitter:data2%:%", name : "%ht:%n:%dom:h2:class:mdItemInfoTitle%:%:%", key : "%ht:%n:%dom:h2:class:mdItemInfoTitle%:%:%", [/pre][/LT市場]

ADD設定ファイルダウンロード

Post Snippets設定

アフィリエイト設定コード

公開version: 1.0.1
公開日:2018/2/16

 アフィリエイトしない場合でも、そのままの状態で導入してください。アフィリエイトリンクを作りたい方は、コード内のID記入場所を変更入力してください。

Title
クリックすると内容全部が選択状態
LT市場ID
Variables
クリックすると内容全部が選択状態
※なし

Shortcode
PHP Code
wptexturize

Snippet
クリックすると内容全部が選択状態
$ver = "1.0.1"; //変更不可 /* Lightning市場 ID設定 コード 要 PHP 5.5以上 WordPress 2.8以上 powered by 勝手にライトニング! https://lightning2014.ensyutsubu.com/blog/ 以下の変数に個人のIDを入れてください */ /* Amazon アソシエイト・トラッキングID */ $amazon_id = '●●●●'; //アソシエイトID $amazon_tid = '●●●●'; //トラッキングID(一つの場合はアソシエイトIDと同 /* 楽天 アフィリエイトID */ $rakuten_id = '●●●●'; /* Yahoo!ショッピングID */ $yahoo_sid = '●●●●'; //Value Commerce の ユーザーID $yahoo_pid = '●●●●'; //Value Commerce の Yahoo!ショッピング広告スペースID /* アフィリエイトリンクを作成するかのチェック 変換が必要な場合は true にしてください 変換したくない場合は false にしてください。 */ $Affiliate_check_amazon = true; //Amazon $Affiliate_check_rakuten = true; //楽天 $Affiliate_check_yahoo = false; //Yahoo!ショッピング /*本体コードに送る作業 */ $tmp_array = array( "ver" => $ver, "a_id" => $amazon_id, "a_tid" => $amazon_tid, "r_id" => $rakuten_id, "y_sid" => $yahoo_sid, "y_pid" => $yahoo_pid, "check_a" => $Affiliate_check_amazon, "check_r" => $Affiliate_check_rakuten, "check_y" => $Affiliate_check_yahoo ); echo json_encode($tmp_array);
Description:
クリックすると内容全部が選択状態
LT市場用のアフィリエイトID記録コード(基本的に一度設定したら触らない)

本体の「ライトニング市場」コード

公開version:0.6.1
公開日: 2018/6/13

Title
クリックすると内容全部が選択状態
LT市場
Variables
クリックすると内容全部が選択状態
※なし

Shortcode
PHP Code
wptexturize

Snippet
クリックすると内容全部が選択状態
$ver = '0.6.1'; // 変更不可 /* Lightning市場 要 PHP 5.5以上 WordPress 2.8以上 powered by 勝手にライトニング! https://lightning2014.ensyutsubu.com/blog/ */ $original_ver = ''; //改造を加えた場合の固有バージョン番号(省略可) $original_sign = ''; //改造を加えた際付け加える署名(省略可) $original_url =''; //署名にリンクするURL(省略可) /* ============================= */ /* アフィリエイトID読み込み */ $id_json = do_shortcode('[LT市場ID]'); if(!$id_json){ exit('<p>ライトニング市場:ERROR:ID設定に問題が発生しています</p>'); }else if($id_json != '[LT市場ID]'){ //ショートコードがあった場合 $id = json_decode($id_json,true); } else { exit('<p>ライトニング市場:ERROR:IDコードが見つかりません</p>'); } /* ============================= パラメータ説明 url:サイトのURL af_goods_linkurl:アフィリエイトリンク title:サイトのタイトル image:商品画像のURL shop_name:ショップ名 shop_url:ショップURL name:商品タイトル key:検索キーワード check_amazon: amazonのアフィリエイトリンク作成するかどうか(true/false) check_rakuten: 楽天のアフィリエイトリンク作成するかどうか(true/false) check_yahoo: Yahoo!ショッピングのアフィリエイトリンク作成するかどうか(true/false) ============================= */ /* 変数初期化 */ $data = array(); $tmp_array = array(); $tmp_array2 = array(); $tmp_url = ''; $amazon_img_size = "_SL160_"; //Amazonの商品画像サイズ 小:_SL160_ 中:_SL320_ 大:空白 $data['site_style'] = 'error'; //通販サイト種類 $data['af_goods_linkurl'] = 'error'; //アフィリエイトリンク $data['search_links'] = true; // 検索リンクを通常は有にする //表示するかのチェックポイントデータ引き継ぎ $data['check_amazon'] = $id['check_a']; $data['check_rakuten'] = $id['check_r']; $data['check_yahoo'] = $id['check_y']; /*関数定義*/ $data_error = function($er_type){ /* エラーでた場合の処理 */ $array = array(); switch ($er_type){ case 'data_error': $array = array( "url" => "https://lightning2014.ensyutsubu.com/blog/", "title" => "勝手にライトニング!", "goods_title" => "データに異常があります", "thum_url" => "https://lightning2014.ensyutsubu.com/blog/wp-content/uploads/2017/06/LIB_NoImage160.jpg", "shop_name" => "EROOR", ); break; default: } return $array; }; /* データ取得 */ $content_str_s = <<<LTICHIBAEOF LTICHIBAEOF; /*改行・余白・preコード削除*/ $content_str = str_replace(array("\\r", "\\n"), '', $content_str_s); preg_match("/(?:<pre>\\s*)([\\S\\s]+?)(?:\\s*<\\/pre>)/",$content_str,$tmp_array); if($tmp_array[0]){ $content_str = $tmp_array[1]; } else { $content_str = trim($content_str); echo 'none<br />'; } /* データを配列に変換 */ while($content_str != ""){ preg_match("/\\s*([^\\"\\'\\s:]+?)\\s*:\\s*((?:\\".*?\\")|(?:\\'.*?\\')|[^\\s\\"\\',]+?)\\s*(?:,|$)([\\s\\S]*)/",$content_str,$tmp_array); if(!$tmp_array[0]){ $data = $data_error('data_error'); break; } /* 型変換 */ $tmp_array[2] = trim($tmp_array[2]); if(strpos($tmp_array[2],"\\"") === false && strpos($tmp_array[2],"\\'") === false){ if(mb_strtolower($tmp_array[2]) == 'true'){ $data[$tmp_array[1]] = true; } else if(mb_strtolower($tmp_array[2]) == 'false'){ $data[$tmp_array[1]] = false; } else{ $data[$tmp_array[1]] = floatval($tmp_array[2]); } } else { $data[$tmp_array[1]] = trim($tmp_array[2]," \\"\\'"); } $content_str = trim($tmp_array[3]); } /* アフィリエイトコードが存在しなかった場合、強制的にリンク作らない */ if($id['a_id'] == ''){ $data['check_amazon'] = false; } else if($id['a_tid'] ==''){ $id['a_tid'] = $id['a_id']; } if($id['r_id'] =='') $data['check_rakuten'] = false; if($id['y_sid'] == '' || $id['y_pid'] == '') $data['check_yahoo'] = false; /* ドメイン取得 */ preg_match("/https*:\\/\\/(.+?)(\\\\/.*|$)/", $data['url'], $tmp_array); $domain = $tmp_array[1]; if(strpos($domain,'rakuten.co.jp') !== false){ //商品が楽天だった場合======================= $data['site_style'] = '楽天'; /* リンクURL作成*/ if($data['check_rakuten'] && $data['af_goods_linkurl'] == 'error'){ $data['af_goods_linkurl'] = 'https://hb.afl.rakuten.co.jp/hgc/'.$id['r_id'].'/?pc='; $data['af_goods_linkurl'] .= urlencode($data['url']).'&m='.urlencode('https://m.rakuten.co.jp/'); } else if($data['af_goods_linkurl'] == 'error'){ $data['af_goods_linkurl'] = $data['url']; } /* パラメータを除去 */ preg_match("/(.+?)(\\?.+|$)/", $data['image'], $tmp_array); if($tmp_array[1]) $data['image'] = $tmp_array[1]; $data['image'] = $data['image'].'?_ex=160x160'; //サムネイルサイズ指定 } elseif(strpos($domain,'amazon.co.jp') !== false){ //商品がAmazonだった場合======================= $data['site_style'] = 'Amazon'; /* パラメータを除去 */ preg_match("/(.+?)(\\?.+|$)/", $data['url'], $tmp_array); if($tmp_array[1]) $data['url'] = $tmp_array[1]; /* イメージサイズ調整 */ preg_match("/(.+\\/.+?)(\\._.+_)*(\\.jpg|\\.png|\\.gif)/",$data['image'],$tmp_array2); //サイズ指定の為分割 $tmp_img_size = $amazon_img_size ? '.'.$amazon_img_size : ""; $data['image'] = $tmp_array2[1].$tmp_img_size.$tmp_array2[3]; /* リンクURL作成*/ preg_match("/\\/(ASIN|dp|gp\\/.+?)\\/(.+?)(\\/|$)/", $data['url'], $tmp_array); //ASIN抽出 if($tmp_array[2]){ $data['ASIN'] = $tmp_array[2]; $data['af_goods_linkurl'] = 'https://www.amazon.co.jp/exec/obidos/ASIN/'.$data['ASIN']; if($data['check_amazon']) $data['af_goods_linkurl'] .= '/'.$id['a_id'].'/?tag='.$id['a_tid']; //アフィリエイトリンク作成 $tmp_url = 'https://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN='.$data['ASIN'].'&Format='.$amazon_img_size.'&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1'; if($data['check_amazon']) $tmp_url .= '&tag='.$id['a_tid']; //アフィリエイトリンク作成 if(file_exists($tmp_url)){ $data['image'] = $tmp_url; } }else{ //取得失敗時 $data['af_goods_linkurl'] = $data['url']; } } elseif(strpos($domain,'shopping.yahoo.co.jp') !== false){ //商品がYahooショッピングだった場合======================= $data['site_style'] = 'Yahoo!'; if($data['check_yahoo']){ $data['af_goods_linkurl'] = '//ck.jp.ap.valuecommerce.com/servlet/referral?sid='.$id['y_sid'].'&pid='.$id['y_pid'].'&vc_url='.urlencode($data['url']); } else { $data['af_goods_linkurl'] = $data['url']; } } /* 検索キーワードが設定されていなければ商品タイトルから抽出 */ if($data['key'] == ''){ $data['key'] = $data['name']; } /*キーワード検索部分 */ $amazon_serch_url ='https://www.amazon.co.jp/gp/search?keywords='.urlencode($data['key']).'&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A'; $amazon_serch_url .= ($data['check_amazon']) ? '&tag='.$id['a_tid'] : ''; //アフィリエイトリンク加工 $rakuten_serch_url = 'https://search.rakuten.co.jp/search/mall/'.urlencode($data['key']); if($data['check_rakuten']) $rakuten_serch_url ='https://hb.afl.rakuten.co.jp/hgc/'.$id['r_id'].'/?pc='.urlencode($rakuten_serch_url).'&m='.urlencode('https://m.rakuten.co.jp/'); //アフィリエイトリンク加工 $yahoo_serch_url ='https://shopping.yahoo.co.jp/search?p='.urlencode($data['key']); if($data['check_yahoo']) $yahoo_serch_url = '//ck.jp.ap.valuecommerce.com/servlet/referral?sid='.$id['y_sid'].'&pid='.$id['y_pid'].'&vc_url='.urlencode($yahoo_serch_url); //アフィリエイトリンク加工 /* 署名部分作成 */ if($original_sign == '' && $original_ver == ''){ //通常版 $signature = '<a href="https://lightning2014.ensyutsubu.com/blog/page-8469/lightning-ichiba/" rel="nofollow" target="_blank" rel="noopener">powered by ライトニング市場ver.'.$ver.'</a>'; } else { //改造版 $signature = ''; $signature .= ($original_url) ? '<a href="'.$original_url.'" rel="nofollow" target="_blank">' : ''; $signature .= ($original_sign) ? $original_sign : '改'; $signature .= ($original_ver) ? ' ver.'.$original_ver : ''; $signature .= ($original_url) ? '</a><br />' : '<br />'; $signature .= 'based on <a href="https://lightning2014.ensyutsubu.com/blog/page-8469/" rel="nofollow" target="_blank" rel="noopener">ライトニング市場ver.'.$ver.'</a>'; } echo "<!-- powered by (or based on) Lightning Ichiba ver $ver -->\\n"; //変更不可 echo '<div class="ltng_ichiba_container"><div class="ltng_ichiba_box"><div class="ltng_upperbox"><div class="ltng_image"><a href="'; echo $data['af_goods_linkurl']; echo '" target="_blank" rel="noopener"><img src="'; echo $data['image']; echo '" /></a></div><div class="ltng_text"><div class="ltng_title"><a href="'; echo $data['af_goods_linkurl']; echo '" target="_blank" rel="noopener">'; echo $data['name']; echo '</a></div><div class="ltng_shopname">'; echo $data['site_style'].': '.$data['shop_name']; echo '</div>'; if($data['search_links'] == true ) { echo '<div class="ltng_links"><div class="ltng_amazon"><a href="'; echo $amazon_serch_url; echo '" target="_blank" rel="noopener nofollow" >Amazon</a></div><div class="ltng_rakuten"><a href="'; echo $rakuten_serch_url; echo '" target="_blank" rel="noopener nofollow" >楽天市場</a></div><div class="ltng_yahoo"><a href="'; echo $yahoo_serch_url; echo '" target="_blank" rel="noopener nofollow" >'; if($data['check_yahoo']) echo '<img src="//ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid='.$id['y_sid'].'&pid='.$id['y_pid'].'" height="1" width="0" border="0">'; echo 'Yahoo!</a></div></div>'; } echo '</div></div><div class="ltng_signature">'.$signature.'</div></div></div>';
Description:
クリックすると内容全部が選択状態
Lightning Blog Toolと一緒に使って商品紹介パーツを簡単に貼れるコード

オススメCSS

公開version: 0.4.2
公開日: 2018/6/13

CSS
クリックすると内容全部が選択状態
/* ライトニング市場 css ver 0.4.2*/ .ltng_ichiba_box { display: block; width: 90%; background-color: #e1f2e1; border: 2px dashed #fff; border-radius: 8px; box-shadow: 0 0 0 5px #e1f2e1; margin: 30px auto; padding: 5px 0 ; } .ltng_ichiba_box .ltng_upperbox{ display: block; } .ltng_ichiba_box .ltng_image{ float: none; display: block; margin: 10px 0; min-width: 160px; } .ltng_ichiba_box .ltng_image img{ display: block; margin: 0 auto; width: initial; max-width:160px; max-height: 200px; } .ltng_ichiba_box .ltng_text { display: block; text-align: center; margin: 5px 10px; } .ltng_ichiba_box .ltng_title { display: inline-block; text-align: left; margin: .5em 10px; } .ltng_ichiba_box .ltng_title a{ text-decoration: none; font-weight: bold; color:#4682b4; font-size: 1em; line-height: 1.2em; display: block; } .ltng_ichiba_box .ltng_shopname{ color: #333; font-size: .7em; text-align: center; margin: 10px; } .ltng_ichiba_box .ltng_links{ text-align: center; margin: 10px 0 8px; } .ltng_ichiba_box .ltng_signature{ display: block; text-align: right; margin: 0 10px; font-size: .7em; clear: both; color: #989898; } .ltng_ichiba_box .ltng_signature a{ color: #989898; text-decoration: none; } .ltng_ichiba_box .ltng_amazon,.ltng_ichiba_box .ltng_rakuten,.ltng_ichiba_box .ltng_yahoo { display:block; margin:5px; padding:4px 1px; text-align: center; border-radius: 8px; } .ltng_ichiba_box .ltng_amazon a,.ltng_ichiba_box .ltng_rakuten a,.ltng_ichiba_box .ltng_yahoo a{ text-decoration: none; font-weight: bold; color: #fff; display: block; } .ltng_ichiba_box .ltng_amazon{ background-color: #e2a724; } .ltng_ichiba_box .ltng_rakuten{ background-color: #f01919; } .ltng_ichiba_box .ltng_yahoo{ background-color: #3712e7; } @media only screen and (min-width: 768px) { /* ここの768pxはブログによって調整必要 */ .ltng_ichiba_box{ padding: 10px 0; } .ltng_ichiba_box .ltng_upperbox{ display: flex; align-items: center; } .ltng_ichiba_box .ltng_image{ float: left; text-align: left; margin: 0 5px 0 20px; } .ltng_ichiba_box .ltng_image img{ margin: 0 auto; } .ltng_ichiba_box .ltng_text { margin:0 10px 0 5px; text-align:left; overflow: hidden; width:100%; } .ltng_ichiba_box .ltng_title { display: block; margin-bottom: .5em; } .ltng_ichiba_box .ltng_shopname{ text-align: right; } .ltng_ichiba_box .ltng_amazon,.ltng_ichiba_box .ltng_rakuten,.ltng_ichiba_box .ltng_yahoo { display:inline-block; width:32%; min-width: 80px; margin:5px 1px 0 0; } }

使用上の注意

アフィリエイトIDに関して

 そのままではアフィリエイトリンクがつかないようにしています。

 アフィリエイトリンクを作りたい場合は、「LT市場ID」のSnippetコードの下記の変数に値を代入してください。

  • $amazon_id => amazonのアソシエイトID
  • $amazon_tid => amazonのトラッキングID(省略可)
  • $rakuten_id => 楽天のアフィリエイトID
  • $yahoo_sid => Value Commerce の ユーザーID
  • $yahoo_pid => Value Commerce の Yahoo!ショッピング広告スペースID
  • $Affiliate_check_amazon => trueにするとAmazonのリンクがアフィリエイトコードに変わります
  • $Affiliate_check_rakuten => trueにすると楽天のリンクがアフィリエイトコードに変わります
  • $Affiliate_check_yahoo => trueにするとYahoo!ショッピングのリンクがアフィリエイトコードに変わります

アフィリエイトリンク生成に関して

 各社のAPIは全く使っておらず、URL生成のアルゴリズムを解析して作っていますので、なにかしら不具合が出る可能性があります。

 使用に関してはあくまで自己責任でお願いします。PHPを使っていますので、1文字でもタイプミスすると、そのページは真っ白になる可能性があります。(その場合は慌てず、管理画面からスニペットを一旦削除してください)

 アフィリエイトIDの打ち間違い等で収入が減った場合等で、損害が出た場合、責務は作成者は負いません。

 アフィリエイトリンク生成に関しては、もしかしたら規約違反に入る可能性があります。個人的にはアフィリエイトリンク作成は全てチェックを外し、LinkSwitchを利用した方が規約違反に全くならないのでオススメです。

 ただし今のところ楽天だけは、このLinkSwitchに対応していないので、そこだけ悩みどころです。

 LinkSwitchはバリューコマースが開発した、通常リンクを自動的にアフィリエイトリンクに変換してくれるサービスです。

改造・2次配布に関して

 オリジナルコードに関しては2次配布はご遠慮ください。ただし、使いやすくするため改造した物に関しては、下記の条件で配布して構いません。

  1. オリジナルのver表記(コード内のみで表示する必要はなし)及び変更不可と書かれているコメントアウト部分は保持してください。(改造した物がどのバージョンから改造かを明確にする意図です)
  2. $original_ver や $original_sign の値を変更してオリジナルではないことを明確に表示してください。または完全に署名を消して表示してください。これに関しては配布する予定がないとしても改造を加えた時点で記入お願いします(CSS変更だけの場合は除く)
  3. 使用者のサイトを破壊・攻撃するような目的のコード改造は認めません。

最後に

 本職のプログラマーが作ったわけではありませんので、不備もあるかと思います。間違い等がありましたら掲示板にてお知らせくださいませ。

更新履歴

0.6.1署名のリンクアドレスを変更
0.6.0軽微なバグを修正。
Amazonアプリに対応
新たなプロパティとして「search_links」を作成しました。
search_links : false
とすると、3つの検索リンクが表示されなくなります。
それに伴いLightningBlogToolsのAmazon用の設定もver1.10に変更
0.5.9リンクにrel=”noopener”を付加しました
0.5.8取得情報が空の項目があった場合意図しない表示になったのを修正
楽天商品価格ナビでも情報取得が出来るようにライトニングツールのコードを修正しました。
0.5.6ブログサイトHTTPS化に伴いコード修正しました
0.5.5betaPostSnippets3.0.3アップデートに伴いまたエスケープマークをダブらせないといけなくなったので修正しました
0.5.0betaPostSnippetsアップデートに伴いエスケープマークのダブらせが必要なくなったので修正しました。
0.3.0betabeta公開