techtalk

WordPressのプラグインを作ってみました
AddThis Social Bookmark Button  Date:2008年06月19日  Category:PHP  Author:水澤

はじめまして。
オープンソース・ジャパン 技術部の水澤です。

最近はよく、WordPressを触ってみています。

WordPressは、世界的に普及してきているだけあって、 情報も多く、プラグインの作成方法などの解説サイトも多いです。 というわけで、短時間で簡単な「YahooAuctionList」というプラグインを作成してみました。
名前のとおり、ブログに自分の出品リストが表示するプラグインです。

インストールすると表示はこのようになります。
使用画面
(赤枠で囲まれてる部分)

使用方法は以下の通りです。
まず、WordPressのインストール配下のwp-content/plugins/に YahooAuctionList.phpをアップロードします。
管理画面のプラグイン管理で、使用するをクリックして有効にします。
次に、設定→yahooAuctionListからID等の設定します。
設定画面
(Yahoo! JAPAN WebサービスのアプリケーションIDが必要です。)

ソースコードは以下に公開しておきます。
こんな簡単に作れるとは、山ほどみつかるプラグインの量にも納得です。

  1.  
  2. <?php
  3. /*
  4. Plugin Name: YahooAuctionList
  5. Plugin URI: http://test.com
  6. Description: 自分のYahooオークションリストを個別記事に表示します。Yahoo! JAPAN Webサービスを利用していますので、アプリケーションIDが必要です。取得していない方は<a href="http://e.developer.yahoo
  7. co.jp/webservices/register_application" target="_blank">こちら</a>から取得してください。
  8. Author: kira
  9. Version: 0.1
  10. Author URI: http://test.com
  11.  
  12.     PostTabs is released under the GNU General Public License (GPL)
  13.     http://www.gnu.org/licenses/gpl.txt
  14. */
  15. define('SERVICE_URL', "http://api.auctions.yahoo.co.jp/AuctionWebService/V1/SellingList");
  16.  
  17. // オプションの取得(DBからとってくる)
  18. if(!get_option("yahooAuctionList")){
  19.  
  20.         $options["yahooAuctionList"] = "";
  21.         update_option("yahooAuctionList", $options);
  22. }
  23.  
  24. //ブログ記事への表示処理
  25. function yahooAuctionList_show($content){
  26.     if($_GET["p"] != null){
  27.         require_once('HTTP/Request.php');
  28.         $options=get_option("yahooAuctionList");
  29.         $path = get_settings('siteurl').'/wp-content/plugins/yahooAuctionList';
  30.  
  31.         $request = new HTTP_Request(SERVICE_URL);
  32.         $request->addQueryString('appid', $options["appid"]);
  33.         $request->addQueryString('sellerID', $options["sellerID"]);
  34.         $request->sendRequest();
  35.  
  36.         $result = simplexml_load_string($request->getResponseBody());
  37.  
  38.         $page = (string)$result["totalPage"];
  39.  
  40.         list($msec, $sec) = explode(" ", microtime());
  41.         srand($msec * 1000000);
  42.         $request->addQueryString('page', rand(1,$page));
  43.         $request->sendRequest();
  44.  
  45.         foreach($result->item as $item){
  46.             $auction_item["title"] = (string)$item->title;
  47.             $auction_item["url"] = (string)$item->url;
  48.             $auction_item["img"] = (string)$item->img;
  49.             $auction_item["price"] = (string)$item->price;
  50.             $auctionList[] = $auction_item;
  51.         }
  52.         $content .= '<br/>';
  53.         $content .= $options["sellerID"] . 'の出品リスト';
  54.         $content .= '<div style="text-align:center; border:solid 1px #AAAAAA;width:100%;">';
  55.         $content .= '<table>';
  56.  
  57.         list($msec, $sec) = explode(" ", microtime());
  58.         srand($msec * 1000000);
  59.         $roop_start = rand(0,3);
  60.         for($i = $roop_start; $i < 6; $i += 2){
  61.             $content .= '<tr>';
  62.             if($auctionList[$i]["title"] != null){
  63.                 $content .= '<td><a href="'. $auctionList[$i]["url"] . '" target="_blank">';
  64.                 if($auctionList[$i]["img"] != null){
  65.                     $content .= '<img src="'. $auctionList[$i]["img"] . '"/><br/>';
  66.                 }else{
  67.                     $content .= '<img src="' . $path . '/no_image.png"/><br/>';
  68.                 }
  69.                 $content .= mb_substr($auctionList[$i]["title"], 0, 50) . "..." . "</a></td>";
  70.                 if($auctionList[$i+1]["title"] != null){
  71.                     $content .= '<td><a href="'. $auctionList[$i+1]["url"] . '" target="_blank">';
  72.                     if($auctionList[$i+1]["img"]){
  73.                         $content .= '<img src="'. $auctionList[$i+1]["img"] . '"/><br/>';
  74.                     }else{
  75.                         $content .= '<img src="' . $path . '/no_image.png"/><br/>';
  76.                     }
  77.                     $content .= mb_substr($auctionList[$i+1]["title"], 0, 50) . "..." . "</a></td>";
  78.                 }
  79.             }
  80.             $content .= '</tr>';
  81.         }
  82.         $content .= '</table>';
  83.         $content .= '</div>';
  84.     }
  85.     return $content;
  86. }
  87.  
  88. add_filter('the_content','yahooAuctionList_show', 1, 1);
  89.  
  90. // オプション設定
  91. function yahooAuctionList_admin() {
  92.         if (function_exists('add_options_page')) {
  93.                 add_options_page('yahooAuctionList', 'yahooAuctionList', 10, basename(__FILE__), 'yahooAuctionList_admin_page');
  94.         }
  95. }
  96.  
  97. function yahooAuctionList_admin_page() {
  98.         if (isset($_POST['submit_yahooAuctionList'])) {
  99.  
  100.                 echo "<div class=\"updated\"><p><strong> yahooAuctionListの設定が完了しました。";
  101.  
  102.                 $options["appid"] = $_POST['appid'];
  103.         $options["sellerID"] = $_POST['sellerID'];
  104.                 update_option("yahooAuctionList", $options);
  105.                 echo "</strong></p></div>";
  106.         }
  107.  
  108.         $options=get_option("yahooAuctionList");
  109.         ?>
  110.  
  111.         <div class=wrap>
  112.           <form name="qsoptions" method="post">
  113.             <h2>yahooAuctionListの設定</h2>
  114.           <p>Yahoo! JAPAN WebサービスのアプリケーションIDが必要です。取得していない方は<a href="http://e.developer.yahoo.co.jp/webservices/register_application" target="_blank">こちら</a>から取得してください
  115. </p>
  116.           アプリケーションID:<input type="text" name="appid" value="<?= $options["appid"] ?>" style="width:100px"><br/>
  117.           出品者ID:<input type="text" name="sellerID" value="<?= $options["sellerID"] ?>" style="width:100px">
  118.         <div class="submit">
  119.         <input type="submit" name="submit_yahooAuctionList" value="<?php _e('設定', '') ?> &raquo;">
  120.           </form>
  121.         </div>
  122.  
  123.         <?php
  124. }
  125.  
  126. add_action('admin_menu','yahooAuctionList_admin');
  127. ?>
  128.  

※上記コードで使用しているno_image.pngはご自分でご用意ください。

←オープンソース・ジャパン TeckTalksとCMS Topに戻る PHPUnitのレポート表示でテストケースの注釈を表示させる方法→
カテゴリー
全て
Flash
PHP
雑記