[WordPress]カテゴリ別/タグ別のRSSリンクをプラグインを使わずに追加する

WordPressでカテゴリ別やタグ別のリンク集を、プラグインを使用せずに作ってみます。
出来あがりはこんな感じ↓



カテゴリ別のRSSフィードを取得する


まずは、カテゴリ別のRSSフィードを取得する必要があるのですが、実はWordPressでは何もしなくてもデフォルトでフィード配信をしてくれています。

例えばカテゴリwordpressのカテゴリページが以下のURLだったとすると…
http://nanoappli.com/blog/archives/category/wordpress
以下のように末尾に”/feed”をつければ、wordpressカテゴリだけのRSSフィードが表示されます。
http://nanoappli.com/blog/archives/category/wordpress/feed

というわけで、各カテゴリのURLさえ求まれば、目的は達成できるという事が分かります。
また、タグに関しても同様にタグのページの末尾に/feedを付けてあげればよいです。


WordPressのAPIでカテゴリ一覧を取得する


WordPressには、カテゴリの一覧を取得するためのAPIが用意されています。
以下のコードで、データの一覧を配列で取得できます。

//カテゴリ一覧を取得
get_terms( "category", "fields=all&get=all" );
 
//タグ一覧を取得
get_terms( "post_tag", "fields=all&get=all" );



上記の例では、名称のコード順にデータを取得していますが、第二引数にorderby=countなどと指定を追加すれば、件数の順に取得する事も可能です。


データを取得したら、nameで名称、countで件数が取れます。
リンクURLはget_category_link()やget_tag_link()で取得可能なので、末尾に”/feed”を追加します。

$cat_all = get_terms( "category", "fields=all&get=all" );
foreach($cat_all as $value) { 
    echo get_category_link($value->term_id) + "/feed"
    echo $value->name + "(" + $value->count ")"
}




cssによる装飾を追加

htmlを出力した上で、cssで装飾を追加した最終形のコードです。

<!-- ******************************** -->
<!-- カテゴリ/タグ別RSS            -->
<!-- ******************************** -->
<style type="text/css">
<!--
.rssLinks { font-size:8pt; }
.rssLinks ul li {
    float: left;
    background-color:#F0F0F0;
    border:1px solid #DDDDDD;
    list-style-type: none;
    margin:4px 3px;
    padding: 1px 1px;
}
.rssLinks a:hover {
    background: url("/rss.png") no-repeat scroll 0 0 transparent;
    background-position:left center;
    text-decoration: none;
}
.rssLinks a {
    background: url("/rss.png") no-repeat scroll 0 0 transparent;
    background-position:left center;
    text-decoration: none;
    padding: 0px 10px 0px 20px;
}
-->
</style>
<div style="background-color:#F9F9F9; border:1px solid #DDDDDD; padding:25px; margin-top:20px;">
    カテゴリ別RSS
    <div class="rssLinks">
        <ul>
            <?php $cat_all = get_terms( "category", "fields=all&get=all" ); ?>
            <?php foreach($cat_all as $value) { ?>
                <li><a class="rssItem" target="_blank" href="<?php echo get_category_link($value->term_id); ?>/feed">
                    <?php echo $value->name;?>(<?php echo $value->count;?>)</a>
                </li> 
            <?php } ?>
        </ul>
        <div style="clear:both"></div>
 
        <br />
        タグ別RSS
        <ul>
            <?php $tag_all = get_terms("post_tag", "fields=all"); ?>
            <?php foreach($tag_all as $value) { ?>
                <?php if ( $value->count < 3 ) continue; ?>
                <li>
                <a class="rssItem" target="_blank" href="<?php echo get_tag_link($value->term_id); ?>/feed">
                    <?php echo $value->name;?>(<?php echo $value->count;?>)</a>
                </li> 
            <?php } ?>
        </ul>
    </div>
    <div style="clear:both"></div>
</div>



カテゴリは全部表示させているのですが、タグは大量にあるので件数が膨大になってしまいました。そのため下記のコードで件数を絞り、記事が3件以上あるタグのみを表示させます。

<?php if ( $value->count < 3 ) continue; ?>



このコードを実行した結果です。いい感じに仕上がってくれました。



上記画像で使用しているRSSのアイコンは、以下のサイトで提供されているものを利用しました。
Feed Icons – Home of the free Standard RSS Icon


RSSアイコンの利用ガイドラインは以下の通りです。

The Mozilla Foundation has made these icons freely available for use by others; this document contains suggested guidelines for use of the icons, and is published and maintained by the Mozilla Foundation as a service to

the community of individuals and organizations wishing to use the feed icon in connection with their own products and services and

members of the general public who use those products and services and rely on the standard meaning of the feed icon as indicating the use of open web syndication formats.



4883377830
WordPressデザインブック3.x対応

関連記事

コメントを残す

メールアドレスが公開されることはありません。