どや!?WordPressで特定のカテゴリをサイドバーに表示させる方法

03 9月

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

WordPressで特定のカテゴリをサイドバーに表示させる方法

先日、News Clippingというカテゴリを作成しました。
このカテゴリは、気に入ったサイトをブックマークする目的で使用しています。
通常の記事とは扱いが違うので、サイドバーに「News Clipping」の記事のみを表示させてみました。
 

特定のカテゴリをサイドバーに表示

下記のコードを「サイドバー (sidebar.php)」に記述します。

<dt>News Clipping</dt>
<dd>
	<?php $posts = get_posts('numberposts=5&category=109'); ?>
	<ul>
		<?php foreach($posts as $post): ?>
		<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><span><?php the_title(); ?></span></a></li>
		<?php endforeach; ?>
	</ul>
</dd>

ポイントは、get_posts関数に「category=カテゴリID」のパラメータを付け加えること。
これだけで該当するカテゴリIDのみがサイドバーに表示されます。
 
 
逆に特定のカテゴリを非表示にしたい場合は、get_posts関数に「cat=-カテゴリID」のパラメータを付け加えます。

<dt>最近の投稿</dt>
<dd class='NewEntry'>
	<?php $posts = get_posts('numberposts=5&cat=-109'); ?>
	<ul>
		<?php foreach($posts as $post): ?>
		<li> <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><span><?php the_title(); ?></span></a></li>
		<?php endforeach; ?>
	</ul>
</dd>

 
 
今更ですが、知ることができて良かった。。。
最後に get_posts関数 のパラメータをメモしておきます。
 
numberposts
(整数) 取得する投稿の数。初期値は 5。

offset
(整数) 先頭から何件の投稿を除外するか。初期値は 0(除外しない)。

category
(整数) 指定したカテゴリID の投稿のみを返す。初期値はなし(全カテゴリ)。

orderby
(文字列) どの項目の値で投稿をソート(並べ替え)するか。次の値など:

  • ‘post_title’ – ページ/記事タイトルのアルファベット順にソート (初期値)
  • ‘post_date’ – 投稿日時順にソート
  • ‘post_modified’ – 最終更新日時順にソート
  • ‘ID’ – 投稿ID でソート
  • ‘post_author’ – 著者の ID 番号でソート
  • ‘post_name’ – 投稿スラッグのアルファベット順にソート

order
(文字列) ソート順。有効値:

  • ‘ASC’ – 昇順(値 小→大)にソート
  • ‘DESC’ – 降順(値 大→小)にソート (初期値)

include
(文字列) 特定の投稿のみを取得したいとき、投稿ID をカンマ区切りで指定。例えば、’include=4,12′ とすれば、記事ID 4 と 12 の記事データのみを返す。このパラメータを指定すると、offset, category, exclude, meta_key, meta_value, post_parent パラメータの指定は無視される。初期値はなし(指定なし)。

exclude
(文字列) 特定の投稿を除外したいとき、投稿ID をカンマ区切りで指定。例えば、’exclude=4,12′ とすれば、記事ID 4 と 12 の記事データは返さない。include パラメータを指定すると無視される。初期値はなし(除外なし)。

meta_key
(文字列) 特定のカスタムフィールドを持つ投稿のみを取得したいとき、そのキーを指定。たぶん meta_value パラメータとセットで指定。include パラメータを指定すると無視される。初期値はなし。

meta_value
(文字列) 特定のカスタムフィールドを持つ投稿のみを取得したいとき、その値を指定。たぶん meta_key パラメータとセットで指定。include パラメータを指定すると無視される。初期値はなし。

post_type
(文字列) 指定した投稿タイプの投稿のみを返す。有効値:

  • post – 記事(初期値)
  • page – 「ページ」
  • attachment

post_status
(文字列) 指定した投稿ステータスの投稿のみを返す。有効値:

  • ‘publish’ – 公開(初期値)
  • ‘draft’ – 草稿
  • ‘private’ – プライベート
  • ‘static’ – 2.1 以降では使われていないかも
  • ‘object’
  • ‘attachment’
  • ‘inherit’
  • ‘future’ – 予約投稿
  • ‘pending’ – ペンディング(2.3 以降でのみ指定可)

post_parent
(整数) 特定の「ページ」の子ページのみを取得したいとき、親ページの ID を指定。include パラメータを指定すると無視される。初期値は 0(指定なし)。
 

テンプレートタグ/get posts – WordPress Codex 日本語版

 

コメント

  1. なかみー より:

    こんにちは!
    wpのサイドメニューで該当のカテゴリ記事リストを出したいと思っていて、たどりつきました。

    <a href="” title=””>

    にして入れたんですが、リンク先がおかしいのですが、なぜでしょうか?
    ソースはきちんと吐き出されているのですが、

    123
    456

    456のリンクを押しても、123のページになってしまうのはなぜでしょうか?

    よろしくお願いいたします。

  2. のぶ より:

    なかみーさん、こんにちは:)

    > ソースはきちんと吐き出されているのですが、

    > 123
    > 456

    > 456のリンクを押しても、123のページになってしまうのはなぜでしょうか?

    ってことはaタグが機能していないのではないでしょうか。
    ダブルクォーテーション(”)が全角・半角か、またaタグが閉じられているか確認してみてください。

  3. たかぴょろ より:

    はじめまして、私も同じ現象で頭を悩ませています。
    前者のコメント者が説明不足のようですがsidebar.phpに、提示されている新着一覧のソースコードを入れたところ、リンク先のURLに記事のpost-idはちゃんと出力されているのですが、実際クリックすると、最新の記事以外(過去の記事)の記事内容が最新の記事で表示されます。URLもちゃんと各記事のpost-idで表示されています。
    ちなみに、single.phpに直接、新着一覧のソースコードを入れても、同じ現象でした。
    もし、解決策を提示いただけますと幸いです。

  4. のぶ より:

    たかぴょろさま

    コメントいただきありがとうございます。
    状況を理解することができました。ありがとうございます。
    ですが、私の環境では同じ現象を確認することができないため、
    以下のコードで試していただいてもよろしいでしょうか。

    <div>特定のカテゴリを表示</div>
    <ul>
    <?php $posts = get_posts('posts_per_page=5 & category=109'); ?>
    <?php if($posts): foreach($posts as $post): setup_postdata($post); ?>
    <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><span><?php the_title(); ?></span></a></li>
    <?php endforeach; endif; ?>
    </ul>

  5. たかぴょろ より:

    早々のご対応、本当にありがとうございます。
    恐縮ですが、再度提示いただいたソースコードにおいても、改善しませんでした。
    テーマがメジャーでない、tdageというものを使用しています。
    single.phpの本文を表示するスペースのソースコードと、何らかの干渉を起こしているものと推察はしているのですが・・・。

  6. のぶ より:

    たかぴょろさま

    テーマが違うのですね(汗)
    最近バタバタしているので、時間が空いたらテーマtdageで動作確認をしてみようと思います。
    すぐに解決できず申し訳ございませんがよろしくお願いします。

トラックバック

  1. […] jTweetsAnywhere 使ったスクリプトのデモ jTweetsAnywhere デモ一覧 どや!?WordPressで特定のカテゴリをサイドバーに表示させる方法 カテゴリーIDの取得方法 WP-PageNavi ページ分割のプラグイン ウェブル […]


  2. Warning: call_user_func() expects parameter 1 to be a valid callback, function 'list_pings' not found or invalid function name in /home/sites/heteml/users/d/o/y/doya/web/design/wp-includes/comment-template.php on line 1810

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">

トラックバックURL

この記事のトラックバック URL