WordPressのいろいろ。使っていてつまづいたところ、工夫したところなどを覚書にしてみました。

  1. PHP
  2. 5 view

カスタム投稿用にサイドバーを追加

ウィジェットがだいぶゴチャゴチャとしてきたので、思い切って投稿タイプ別にサイドバーを追加しました。
今のところ4つ投稿タイプを作っているので4つ追加です。

register_sidebar( array( 'name' => 'お知らせ用サイドバー') );
register_sidebar( array( 'name' => 'ナントカ用サイドバー') );

こんな感じでfunction.phpに追加しました。
ただ連番でよければ

register_sidebars(4, array('name'=>'Sidebar %d'));

と、書いていけばいいんですが、なんせ4つもカスタム投稿タイプがあるので何番のサイドバーをどのタイプにしたっけと追いかけるのも面倒です。そのため、ひとつずつ名前をつけて登録しました。
ひとつずつの場合、sidebarですが、複数を指定するときはsidebarsと複数形にします。
今回はウィジェットを使いません。もうゴッチャゴチャになるので、新しいサイドバーの中身は真っ白から始めて、ガジガジとphpを書いていきます。
まずは記事一覧を表示したかったので前の記事を応用です。日付を外して20記事まで表示できるようにしました。
こんな感じ。

<?php
    $myQuery = new WP_Query(); // WP_Queryオブジェクト生成
    $param = array( //パラメータ。
        'posts_per_page' => '20', //(整数)- 1ページに表示する記事数。-1 ならすべての投稿を取得。
        'post_type' => 'news', //カスタム投稿タイプのみを指定。
        'post_status' => 'publish', //取得するステータスを指定:publish(公開済み)
        'orderby' => 'ID',
        'order' => 'DESC' //降順。大きい値から小さい値の順。
    );
    $myQuery->query($param);  // クエリにパラメータを渡す
?>
<ul style="margin:0px;padding:0px;text-indent:-4.5em;padding-left:4.5em;">
<?php if($myQuery->have_posts()): while($myQuery->have_posts()) : $myQuery->the_post(); ?>
        <li style="line-height:150%;"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>の詳細へ"><?php the_title(); ?></a></li>
<?php endwhile; endif; ?>
</ul>

スカッときれいに出てくれます。あとはcssで整えて、お知らせで使っているタームの一覧とアーカイブとツイッターを表示させました。
それから投稿タイプ別にアーカイブとシングルページも作っていたので、それぞれのサイドバーの読み込みの名前を直しました。
例:

<?php include('sidebar-news.php'); ?>

この記事一覧を出したかったのです。
カスタムメニューで作って表示させていたのですが、数が多くなるにつれて重くなるし、書いたらいちいちカスタムメニューに追加させないといけないしで、結構手間を感じていました。
これならすっきりです。

  • コメント: 0

PHPの最近記事

  1. PHPを更新したら不具合が出た…原因はプラグイン

  2. カスタム投稿もトップの最新記事に含める

  3. タグの表示がおかしい

  4. WordPress4.2についてきた絵文字機能

  5. WPのURLを変えたらログインできなくなった場合の対処法

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


PR

ご紹介しているテンプレート、商品にアフィリエイトリンクが含まれています。
PAGE TOP