カテゴリー
テンプレートタグ

get_posts()

新着何件など、いろいろな用途に使います。マルチループ(複数ループ)を作成するためのシンプルなタグです。また、グローバル変数$wp_queryを変更しません。 表示件数のデフォルトが5件なので注意。気づかずに10分くらい悩みました。 全件表示にしたいときは引数で「numberposts=-1」とすればOKです。

位置

ループ外

引数

  • $numberposts…取得する投稿の数。デフォルトは5件。全件出すには「-1」にする。
  • $offset…先頭から何件の投稿を除外するか。
  • $category…指定したカテゴリID の投稿のみを返す。カテゴリID をマイナスにすると除外。複数のカテゴリを指定する場合は、カンマで区切る(配列不可)。
  • $category_name…カテゴリースラッグで指定
  • $tag…指定したタグスラッグの投稿のみを返す。
  • $orderby
  • 'author' – 著者ID。
  • 'category' – カテゴリID。
  • 'content' – コンテンツ。
  • 'date' – 作成日。
  • 'ID' – 投稿ID。
  • 'menu_order' – メニュー。ページとアタッチメントでのみ有効。
  • 'mime_type' – MIME type。アタッチメントでのみ有効。
  • 'modified' – 最終更新日
  • 'name' – stub。
  • 'parent' – 親ID。
  • 'password' – パスワード。
  • 'rand' – ランダム。
  • 'status' – ステータス。
  • 'title' – タイトル。
  • 'type' – 投稿タイプ。
  • $order
    • 'DESC' – 降順(高から低)。
    • 'ASC' – 昇順(低から高)。
  • $include
  • $exclude
  • $meta_key and $meta_value
  • $post_type
  • $post_status
  • $post_parent…このIDの投稿の子のみを表示する。
  • $nopaging…ページングを有効/無効にする。ページングを無効にすると $numberpostsオプションが無視される。

タグ使用例

カテゴリースラッグexampleの投稿を全件出力(2012.9.3一部修正)


カテゴリーからカテゴリー名を出力

<?php // カテゴリーからカテゴリー名を出力
$category = get_the_category();
echo $category[0]->cat_name;
?>

※query_posts()でいうところのwp_reset_query()にあたるものが、get_posts()にもあります。 です。 しかし、個人的には使いどころがいまいち解っていません。。 解っていないけれどいつか使うかもしれないのでメモ。

の使いどころがわかりました。そして、その前に上記のコード見本に肝心な記述が抜けている事もわかりました。。。
既に修正したのですが、「foreach($myposts as $post)  」のあとに必要な「setup_postdata($post)」が今まで抜けておりました…すみません。
これがないと、get_posts()では、the_content() のコンテンツや ID などが使えないのですね。
そして、最後はwp_reset_postdata()でリセットします。
※ご指摘くださった方へ…貴重なご指摘ありがとうございました。間違いに全く気づいていなかったので、とても助かりました!         2012年9月3日 記

 

カテゴリー
テンプレートタグ

wp_list_categories()

リンク付きカテゴリーリストを表示します。カテゴリーリンクをクリックすると、テンプレート階層ルールに基づく適切なカテゴリーテンプレートを用いたカテゴリーページに、そのカテゴリーに属する全ての記事が表示されます。

位置

ループ外

 

引数

  • show_option_all
  • orderby
  • order
  • show_last_updated
  • style
  • show_count
  • hide_empty
  • use_desc_for_title
  • child_of
  • feed_type
  • feed_image
  • exclude
  • exclude_tree
  • include
  • hierarchical
  • title_li
  • number
  • echo
  • depth
  • current_category
  • pad_counts
  • taxonomy
  • walker

コード記述例

カテゴリ一覧を出力(カテゴリスラッグからIDを取得)

<?php //カテゴリ一覧を出力(カテゴリスラッグからIDを取得)
wp_list_categories("title_li=&include=" .(get_category_by_slug('info')->term_id). "," .(get_category_by_slug('event')->term_id). "," .(get_category_by_slug('plan')->term_id));
?>

あるカテゴリに属する子カテゴリをリストで取得

<?php //あるカテゴリに属する子カテゴリをリストで取得
$cat_now = get_the_category();
$cat_now = $cat_now[0];
$parent_id = $cat_now->category_parent;
?>
<?php wp_list_categories("title_li=&child_of=$parent_id"); ?>

カスタムタクソノミーのリスト

<ul>
<?php // カスタムタクソノミーのリスト
wp_list_categories('taxonomy=example&orderby=ID&order=DESC&title_li='); ?>
</ul>
カテゴリー
テンプレートタグ

wp_list_pages

固定ページへのリンクリストを表示。サイドバーでよく使います。

wp_list_pages1

位置

ループ外

引数

  • child_of…(整数) ページ ID を値としてそのページのサブページのみを表示します。
  • title_li
  • meta_key
  • meta_value

ほか多数

ポイント

currentページにはclass=”current_page_item”がつきます。
CSSでスタイルを変えれば”今いる感”を出せますね。

コード記述例

見出しを出さずに固定ページリストを表示

カテゴリー
テンプレートタグ

single_cat_title()

現在のページのカテゴリー名をリンクなしで出力。カテゴリーページ以外では無効。
シングルページでも無効。(カテゴリー名を取得するのはsingle_cat_title()だ!とやっと覚えたのに、いざsingle.phpで使ったら取得できず結構へこみました。singleとついているので、てっきり…)
シングルページでカテゴリー名を取得したい時はget_the_category()を使います。

カテゴリーページ、たとえばarchive.phpでは、アーカイブされている記事のもつカテゴリーに左右されることなく、そのアーカイブ自身のカテゴリー名を取得してくれます。

位置

ループ外

引数

  • prefix (文字列)- カテゴリー名の前に出力するテキスト。デフォルトでは空。
  • display (true/false)- 取得した値の処理方法。
  • true(デフォルト。カテゴリー名をページ内に出力)
  • false(PHPで使用できる値としてカテゴリー名を返す)

 

カテゴリー
テンプレートタグ

wp_get_archives()

月別アーカイブに使います。get_archives() との違いは、パラメータの引数をクエリ文字列形式で関数に渡すことだけです。

位置

テンプレートのどこでも使えます。

引数

  • type…(文字列) 表示するアーカイブリストの種類。初期値は月別アーカイブ。有効値:
  • yearly
  • monthly (初期値)
  • daily
  • weekly
  • postbypost
  • limit…(整数) 取得するアーカイブ数。初期値は制限なし。
  • format…(文字列) アーカイブリストの形式。有効値:
  • html… (初期値) – HTML のリストタグ(<li>)と before・after の文字列。
  1. option – セレクトボックスまたはドロップダウンメニュー用のセレクトタグ(<select>)内のオプションタグ(<option>)。
  2. link – リンクタグ(<link>)内に。
  3. custom – Custom list using the before・after の文字列を用いたカスタムリスト。
  • before
  • after
  • show_post_count

コード使用例

月別アーカイブへのリンクを投稿数表示ありで出力

<?php //月別アーカイブへのリンクを投稿数表示ありで出力
wp_get_archives('type=monthly&amp;show_post_count=1'); ?>
<select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'>   <option value=""><?php echo esc_attr(__('月を選択')); ?></option>
<?php wp_get_archives('type=monthly&amp;format=option&amp;show_post_count=1'); ?>
</select>

target=”_blank”付きの<a>タグを吐き出す

<?php
$monthly_archives=wp_get_archives('type=monthly&amp;show_post_count=1&amp;echo=0');
$monthly_archives=str_replace('<a','<a target="_parent"',$monthly_archives);
echo $monthly_archives;
?>
カテゴリー
WordPressのこと

マルチサイトのURLから/blog/を消したい

何かと便利そうなマルチサイトですが、親ブログのURLを見ると勝手に/blog/というスラッグが入っています。何これ…。もともとブログにしたかったなら良いですが、こんなの入ってたら嫌だという人が多いのではないでしょうか。

/blog/の削除方法は以下のとおり。

  1. 親ブログのパーマリンク設定を「デフォルト」に戻す
  2. サイトネットワーク管理者→サイト→編集→設定タブ
  3. Permalink Structureの項目が空欄になっているので、「blog」を省いたパスを書き込む
    (例:/archives/%post_id%)

これで「/blog/」はURLから消えてなくなります♪

上記の例で設定した場合、カテゴリーアーカイブのURLは

http://xxxxxxxxxxx.ne.jp/archives/category/xxxxx

となります。

「/archives/」も消したい!というときは…。
Permalink Structureの項目に「/%post_id%」と入れましょう。
これで、カテゴリーアーカイブのURLは

http://xxxxxxxxxxx.ne.jp/category/xxxxx

となります。

さらに!/category/も消したい!というときは…。
プラグインで対応です(私の場合)
導入後、有効にするだけで/category/がするするっと消えてくれます。
WP No Category Base

※My Category Orderとの相性が悪いようなので注意です。
Category Order を使うと良いようです。

※子ブログでしか成功しない場合あり

参考サイト様(/blog/を消す件):マイペースクリエイターの覚え書き

参考サイト様(/category/を消す件):WP SEOブログ