WordPressで消費税込み価格を表示するショートコード

関連記事

Web上にあるWordPressのコードは汚いコードばかり

WordPress界隈って本当にクソみたいなPHPのコードが多いですよね。

  • 妙なスペースがある
  • ダブルクォートとシングルクォートがゴチャ混ぜ
  • 匿名関数を使えばいいのにいちいち変なmy_なんとかみたいな関数を定義してadd_filterとかadd_actionしている

少なからずWeb業界の人間が書いた記事が紛れていると思われるのにこの有り様。

かようなコードがWeb屋によって今日もどこかのサイトに組み込まれていると思うと気の毒です。

それはさておき、消費税込み価格を表示するショートコードは以下。

クラスを利用する


<?php

class Templates
{
    public const TAX = 10;        // 消費税
    public const REDUCED_TAX = 8; // 軽減税率

    public function __construct()
    {
        add_shortcode('show_price', [$this, 'showPrice']);
    }

    public function showPrice($args): string
    {
        $price = (int) $args[0];
        $isReduced = $args[1] ?? false;
        $taxPrice = $this->getTaxPrice($price, $isReduced);

        return sprintf('<span class="tax-price">税込み&nbsp;%s円(税抜き&nbsp;%s円)</span>',
               number_format($taxPrice),
               number_format($price));
    }

    private function getTaxPrice(int $price, bool $isReduced = false): string
    {
        $taxRate = sprintf('1.%02d', $isReduced ? self::REDUCED_TAX : self::TAX);
        $taxPrice = floor($price * $taxRate);

        return $taxPrice;
    }
}

functions.phpからrequire_once()か何かでTemplate.phpを読み込んだ後にnew Templates()すると以下のショートコードで呼び出せます。

  • 通常税率の場合価格のみを渡す

[show_price 300]

  • 軽減税率の場合価格とtrueを渡す

[show_price 300 true]

??のnull安全演算子を使っているのでPHP8以降でないと動作しません。

サポート切れPHPを使っている人はよしなに変更してください。

関連記事

SNSでシェアする