Colorme-WPの痒いところに手が届かない感の解決（税込価格表示・３枚目以降の商品画像）


知らないうちにプログラム触ってる者です。
今回、案件の中でColormeShopとWordpressを連携させる部分がありました。
API叩くの腰重いなぁと（赤ちゃんの顔で）思っていたところ、GMOさん謹製のColorme-WPなるプラグインがあるではありませんか！
これ使うと便利だなぁ！と思って触ったところ、ちょっと細かいところで不満点というか微妙な点があったのでプラグインをいじることにしました。

なお、筆者のスキルは赤ちゃんです。
改善したほうが良い点などございましたらご指摘もらえるとよだれ垂らして喜びます。
あと、仕事ください。

# 参考にするページとか
https://developer.shop-pro.jp/docs/colorme-api

https://wordpress.org/plugins/colormeshop/

Wordpress, プラグインは共に最新版です。

#痒いポイント１：ショートコードで持ってくる価格が定価
Colomeのプラグインでは便利便利ノンタンなショートコードで商品の情報を持ってくることができます。

こんな感じで。
[colormeshop_product product_id="123" data="price"]

指定できるパラメーターはこんな感じ。（以下引用）
>パラメータ
>product_id (商品ID)
>省略した場合は $_GET['colorme_item'] の値が使われます
>data (取得したい属性)
>利用可能な属性
>id (商品ID)
>name (商品名)
>model (型番)
>price (定価)
>regular_price (通常販売価格 (割引前の販売価格))
>members_price (会員価格)
>unit (単位)
>weight (重量)
>simple_explain (簡易説明)
>explain (商品詳細説明)

ほうほうほう。
あっ、定価だこれ。

Colormeのプラグインを使うケースって、基本的にはショッピングサイトだと思うんですが、ご存知の通り我が国では税込の価格を表示しないといけないルールとなっています。（10%の税込価格表示は2021/4/1から）
これは面倒だ、GMOさんにお知らせしなきゃ！
確か、プラグインに要望先のフォームがリンクされてたな。
クリックしてっと。。

![スクリーンショット 2021-04-02 13.14.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604519/d6a4cce0-722d-e560-e6c8-11d20cfcf404.png)

## じゃあプラグインをいじろう
結局のところ、プラグインもやってることはAPIを叩いてデータを持ってきているだけなので、現在定価が持ってこられているところを税込価格で取得するようにしてくれば良いのではないかという発想からプラグインを触ることにしました。

プラグインを触る場合は「自己責任」、「アップデートしたら再度変更しないとダメ」という点は覚えておきましょう！
赤ちゃんとの約束だぞ！

具体的に現在どのデータが持ってこられていて、どのデータと差し替えればいいのかをAPIドキュメントで確認します。
以下に商品データの価格部分のパラメータを抜粋します。


```
"sales_price": 1980,
"sales_price_including_tax": 2178,
"sales_price_tax": 198,
"price": null,
"members_price": 1680,
"members_price_including_tax": 1848,
"members_price_tax": 168,
```

現在持ってきているデータは"price"ですね。
これを"sales_price_including_tax"に変更すれば良さそうです。

変更の該当ファイルはプラグイン内 **colormeshop/src/Swagger/Model/Product.php** です。
プラグインエディタとかで開いてください。
その中の182行目を以下のように変更します。

```php:colormeshop/src/Swagger/Model/Product.php
'price' => 'price',
↓ #下記に変更
'price' => 'sales_price_including_tax',
```

以上で価格の表示が税込価格に変更されているはずです。

#痒いポイント2：商品画像の３枚目以降が取得できない
カラーミーショップ（本家）では、１つの商品に対しメイン画像以外にも画像を複数添付することができます。
しかし、カラーミーのAPIを通じてURLを取得しようとすると実はメイン画像以外に３枚分までしか取得することができないのです。

APIドキュメントにしっかり記載されていました。（よく読まなかったので数時間無駄に）
![スクリーンショット 2021-04-02 13.45.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604519/749a3b68-83d3-99fa-d7ce-df44ebc85913.png)

ということはもちろん、そのAPIを経由しているプライグインも３枚目以降の画像は取得できないのですが、プラグインの説明にはさも全ての画像を取得できる空気感が演出されています。（信じたので数時間無駄に）
APIが対応していないのなら、先ほどのようにプラグインをいじる手段も無理なので、今度は別の方法を試す必要があります。

##URLをいじればええやん
取得してきた画像のURLを確認してみると、https://fugafuga/画像の名前**_o3**/hogehoge/ みたいな形式になっています。
赤ちゃんは名探偵なのでこのo3がother3ってことだと気がつきました。
試しに数字の部分を変えてみるとちゃんと４枚目以降の画像のURLになっています。（赤ちゃんの環境では）
なので、画像を取得してきた部分で以下のようにして文字列を入れ替えてやればよかったです。

```php:画像を呼び出すファイル内
$item3 = do_shortcode('[colormeshop_image product_id="任意のID" type="other3"]');

#other3以降のURLを書き換え
#ifしてるのはother2までしか画像が登録されていない場合にURL取得できないのを防ぐため
<?php if ($item3) : ?>
    <?php $item4 = str_replace("_o3", "_o4", $item3); ?>
<?php endif; ?>
<?php if ($item4) : ?>
　　<?php $item5 = str_replace("_o3", "_o5", $item3); ?>
<?php endif; ?>
```

これで無事other3以降の画像URLを取得することができました。


#初めての投稿でお目汚し失礼いたしました
普段はおにーさん、おねーさんの記事を参考にしてばかりです。
特にpython、django、laravelあたりの記事を参考にしており、いつか自分も！という想いがありました。
本業はマーケやら経営企画のコンサル（中に入ってバリバリやるよ）なのですが、どうしてもクリエイティブな部分やweb周りは業務に付帯するのでディレクションするためにも自分である程度やるべと思っているうちにプログラミングも業務の一環になっています。

弊社ではマーケ業務のデータ分析、立案、実行支援、代行からクリエイティブまで幅広く業務を受けております。
お仕事のご相談やご提案、軽い雑談でもお待ちしております。
daiku.hina123@gmail.com