諸君stdClassなんですよ。WordPressで特定のカテゴリの時だけに見せるコンテンツを作る方法

  • このエントリーをはてなブックマークに追加
  • LINEで送る

Yahooオークションのアイテムを表示するブログパーツを設置したくなったのですが、サイドバーも長くなってきたし特定のカテゴリの時にだけブログパーツを表示させることが出来ないかなと思って調べてみました。

カテゴリの値を取得して、希望する値が入ってたらif文でブログパーツを表示させればいいだろうと予想していたので、割とすぐに出来るかと思いきや、かなり苦戦しました。

やりたかったことは「Mac」のカテゴリの時だけヤフオクのブログパーツを表示すること

単純に以下の画像に表示されている黄色いヤフオクのブログパーツを自分の記事で「Mac」のカテゴリに所属してる記事の時にだけ、表示させたかったのです。

これが一筋縄で行かなかったわけですがw

Screen Shot 2011 08 31 at 4 12 33 AM 1

つまづいたポイント:取得された値が2次元配列だと思っていたらstdClassだったこと。

カテゴリをget_the_categoryで取得して変数に格納してみたら、どうやら配列(複数カテゴリは設定出来るわけだから当たり前といえば当たり前ですよね^^;)

だったのでまずはprint_rで出力してみました。

帰ってきた値が2次元配列(こう思ったのがそもそも躓く原因)だったので$変数[値1][値2]で値を取得出来るだろうと思ったんですが、全然取得出来ないorz

なんでだろうと大元の配列の値を見てるとstdClassという表記があったので、ググッてみたところどうやらオブジェクトの一種らしく配列ではないことが判明。

つまり、カテゴリ自体は配列なんだけど、配列の各値の中にオブジェクト形式で値が記述されていたわけです。

それを一生懸命多次元配列で値を取得しようとしてたわけだから、進まないwww

オブジェクトのメンバ変数を連想配列型に変換して解決

どうやってカテゴリ名を取得しようか悩んでいたら、オブジェクト型のメンバ変数を連想配列型に変換できることが判明。

こちらの記事を参考にさせていただきました。

連想配列に変換されれば、当たり前ですが、連想配列の値の取り出し方で値を取り出せる用になるので、無事値を取得。

カテゴリ名を取得したらif文で該当するカテゴリのときだけブログパーツを出力

今回は”Mac”というカテゴリが記事に設定されている場合ヤフオクのブログパーツを表示するようにしたかったので、
カテゴリの中に”Mac”という値があったら、ループを止めてブログパーツを出力するようにif文を設定しました。

恒例のソース公開

見よう見まねで書いてるソースなので、もっとスマートな表記があるとは思いますが、希望の動作をしてくれるので良しとしています。

<!--カテゴリがMacの時だけMacbookAirのYahooガジェットを表示---->

<?php
    $cat = get_the_category();//カテゴリを取得
    $count = count($cat);//いくつカテゴリが設定されているか確認

    //最初のカテゴリから最後のカテゴリまでカテゴリ名を取得。途中"Mac"というカテゴリ名があればそこでループを終了
    for ($i = 0; $i<$count; $i++){
        $dog = (array) $cat[$i];
        $lion = $dog['name'];
        if($lion == "Mac"){
            break;
        }
    }
?>

//変数lionの値が"Mac"だった場合ブログパーツの内容を表示
<?php
if ($lion == "Mac") {  ?>
<!--ここに目的の内容を貼り付ける----------------------------------------------->
<script type="text/javascript" src="https://i.yimg.jp/images/auct/blogparts/auc_bp.js?s=2&cl=0&qu=MC968J%2FA&cid=2084286828&di=0&od=0&ti=%E6%9C%80%E6%96%B0MacBookAir%E4%BE%A1%E6%A0%BC&pt=0&dotyid=aucb%2Fp%2F1decP_20BdxZpf71OXFCHA--&sid=2219441&pid=878398084"></script>
<!----------------------------------------------------------------------------------->
<?php } ?>

<!----------------------------------------------------------------------------------->

このやり方は応用が結構きくと思う

今回やって思ったのですが、プラグインだけでなく、こういう簡単なphpの条件処理を設定できると、色々と動的な処理が出来るようなるので、すごく便利だなと思いました。

今後は長くなった再度サイドバーにこの方法を応用して、特定の条件に合致する場合だけ表示する項目なんかを増やしたいと思います。

これって例えば、アフィリエイトとかに応用するとAdsenseに近いことをやることも出来ないことはないのかななんて思ったりします。

あとがき

8月の頭に参加した懇親会で名刺の必要性を痛感したので、@takahirさんに教えてもらったブロガー名刺をその日に前川企画印刷さんに発注。

途中お盆を挟んだこともあり、ちょっと時間がかかってしまったのですが、デザインが決まったらすぐに届いて、無事予定してた仕事で名刺を渡すことが出来ました。

ありがとうございます!

デザインも考えてくれてブログで紹介するだけで白黒100枚で1,000円という破格で対応してくれます!

カラーでも1,300円だったので、僕はカラーでお願いしました。

そんなブロガー名刺の詳細はこちら

これでやっと懇親会とかで名刺交換が出来るw

ただ、名刺届いたばっかなんだけど、ブログのタイトル変えようかなと思ってたりして・・・^^;

どうしよ。

  • このエントリーをはてなブックマークに追加
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*