グッズメモ アフィリエイトのショートコード

グッズメモ アフィリエイト・WordPressプラグインのソースコード記事の目次WordPress

Shortcode.php

namespace goodsmemo\shortcode;

use goodsmemo\amazon\AmazonAffiliate;
use goodsmemo\rakuten\RakutenAffiliate;
use goodsmemo\exception\IllegalArgumentException;
use goodsmemo\exception\HttpRequestException;
use goodsmemo\exception\HttpResponseException;

require_once GOODS_MEMO_DIR . "amazon/AmazonAffiliate.php";
require_once GOODS_MEMO_DIR . "rakuten/RakutenAffiliate.php";
require_once GOODS_MEMO_DIR . "exception/IllegalArgumentException.php";
require_once GOODS_MEMO_DIR . "exception/HttpRequestException.php";
require_once GOODS_MEMO_DIR . "exception/HttpResponseException.php";

/**
 * Description of Shortcode
 *
 * @author Goods Memo
 */
class Shortcode {

    public static function makeAffiliateHTML($atts, $content = null) {

	//ショートコードの名前は英小文字、数字、下線を使う必要があります。特にハイフン(ダッシュ)には注意して、使わないのが賢明です。
	//注意: 属性名は大文字と小文字が混在可能ですが、パース後はいつも小文字になります。
	//var_dump($atts);
	$attsMap = shortcode_atts(array(//変数名(属性名) => 初期値
	    "service" => "",
	    "operation" => "",
	    "search_index" => "",
	    "keyword" => "",
	    "number" => ""), $atts
	);
	extract($attsMap); //例:変数 $service などを作成する

	try {
	    $affiliateHTML;
	    switch ($service) {
		case "amazon":

		    $affiliateHTML = AmazonAffiliate::makeHTML($operation, $search_index, $keyword, $number);
		    break;

		case "rakuten":

		    $affiliateHTML = RakutenAffiliate::makeHTML($operation, $keyword, $number);
		    break;

		default:

		    throw new IllegalArgumentException("無効なサービス名:" . $service);
	    }

	    return $affiliateHTML;
	} catch (IllegalArgumentException $ex) {

	    $message = "<p>引数の例外:" . $ex->getMessage() . "</p>";
	    return $message;
	} catch (HttpRequestException $ex) {

	    $message = "<p>HTTPリクエストの例外:" . $ex->getMessage() . "</p>";
	    return $message;
	} catch (HttpResponseException $ex) {

	    $message = "<p>HTTPレスポンスの例外:" . $ex->getMessage() . "</p>";
	    return $message;
	}
    }

}