読者です 読者をやめる 読者になる 読者になる

東京の会社辞めて地方で生きるわ。

勢いで会社を辞めて縁のない地方で生きることはできるのか

【wordpress】カスタム投稿でブログ機能を実装するときのメモ

wordpress

wordpressデフォルトの「投稿」でブログ機能実装すると、個別記事のパーマリンクが「~~~~~~.com/category/title」になる。
これを「~~~~~~.com/blog/category/title」にしたいため。

とりあえずカスタム投稿のためのプラグイン「Custom Post Type UI」、カスタム投稿のパーマリンクを制御するため「Custom Post Type Permalinks」を使用している。

アーカイブ

今回はデフォルトのarchive.phpで作った。

アーカイブではタグやカテゴリーなど様々な一覧用のタイトルを用意。ここでタクソノミーでの条件分岐も記載してあるのでみるべし。

<div class="page_title container">
      <h1>Blog</h1>

		  <?php if(is_month()): ?>
			<h2 class="archive_title"><?php the_time("Y月m月") ?> の記事一覧</h2>
			<?php elseif(is_author()): ?>
			<h2 class="archive_title"><?php the_author() ?> の記事一覧</h2>
			<?php elseif(is_tag()): ?>
		    <h2 class="archive_title">タグ: <?php single_tag_title(); ?>の記事一覧</h2>
			<?php elseif(is_category()): ?>
		    <h2 class="archive_title">カテゴリー: <?php single_tag_title(); ?>の記事一覧</h2>
            <?php elseif(is_tax('blog_category')): ?>
            <h2 class="archive_title">カテゴリー: <?php single_tag_title(); ?>の記事一覧</h2>
            <?php elseif(is_tax('blog_tag')): ?>
            <h2 class="archive_title">タグ: <?php single_tag_title(); ?>の記事一覧</h2>
		 <?php endif; ?>    
  
</div><!-- page_title -->  


記事ループは普通

<?php if(have_posts()): while(have_posts()): the_post(); ?>

ここにループさせたいコード

<?php endwhile; // end of the loop. ?>
  <?php else: ?>
<p class="no_article">投稿されたものがありません。</p>
<?php endif; ?>

②カテゴリー

カテゴリーはタクソノミーで作った。
記事の該当しているカテゴリーを表示させるコードは、

  <p class="postcat"><?php echo get_the_term_list($post->ID, 'タクソノミー名'); ?></p>


また、カテゴリーをliタグに入れるときのコードはこちら。これはブログのサイドバーとかで使う。最初のカスタム分類名を変えればOK。
下あたりのコードにかっこで何記事のカテゴリーがあるかカウントするコードがある。

<h2>Category</h2>
<?php
// カスタム分類名
$taxonomy = 'blog_category';

// パラメータ 
$args = array(
    // 子タームの投稿数を親タームに含める
    'pad_counts' => true,
  
    // 投稿記事がないタームも取得
    'hide_empty' => false
);

// カスタム分類のタームのリストを取得
$terms = get_terms( $taxonomy , $args );

if ( count( $terms ) != 0 ) {
    echo '<ul>';
     
    // タームのリスト $terms を $term に格納してループ
    foreach ( $terms as $term ) {
    
        // タームのURLを取得
        $term = sanitize_term( $term, $taxonomy );
        $term_link = get_term_link( $term, $taxonomy );
        if ( is_wp_error( $term_link ) ) {
            continue;
        }
        
        // 子タームの場合はCSSクラス付与
        if( $term->parent != 0 ) {
            echo '<li class="children">';
        } else {
            echo '<li>';
        }
        
        // タームのURLと名称を出力
        echo '<a href="' . esc_url( $term_link ) . '">' . $term->name . '</a>(' . $term->count . ')';
        echo '</li>';
    }
   
echo '</ul>';
}
?>

③タグ

タグもタクソノミーで作った。
記事の該当しているタグを表示させるコードは、以下。てかもちろんカテゴリーと一緒

  <p class="tag_tax"><?php echo get_the_term_list($post->ID, 'タクソノミー名'); ?></p>

サイドバーによくあるタグクラウドも作った。てかまあ上のやつと同じ要領やけども。

<h2>Tag</h2>

<div class="tag_overflow">

<?php
// カスタム分類名
$taxonomy = 'blog_tag';

// パラメータ 
$args = array(
    // 子タームの投稿数を親タームに含める
    'pad_counts' => true,
  
    // 投稿記事がないタームも取得
    'hide_empty' => false
);

// カスタム分類のタームのリストを取得
$terms = get_terms( $taxonomy , $args );

if ( count( $terms ) != 0 ) {
    echo '<ul>';
     
    // タームのリスト $terms を $term に格納してループ
    foreach ( $terms as $term ) {
    
        // タームのURLを取得
        $term = sanitize_term( $term, $taxonomy );
        $term_link = get_term_link( $term, $taxonomy );
        if ( is_wp_error( $term_link ) ) {
            continue;
        }
        
        // 子タームの場合はCSSクラス付与
        if( $term->parent != 0 ) {
            echo '<li class="children">';
        } else {
            echo '<li>';
        }
        
        // タームのURLと名称を出力
        echo '<a href="' . esc_url( $term_link ) . '">' . $term->name . '</a>';
        echo '</li>';
    }
   
echo '</ul>';
}
?>  
  
</div><!--tag_overflow-->


④サイドバーによくある月別アーカイブ

<h2>Archive</h2>
<ul>
<?php wp_get_archives('post_type=blog&type=monthly'); ?>
</ul>


【参考URL】
https://yogawa.com/post-4005
http://webcake.no003.info/webdesign/get-terms.html
http://test55.sakura.ne.jp/tm/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E6%8A%95%E7%A8%BF%E3%81%AE%E3%82%BF%E3%83%BC%E3%83%A0%E3%81%AE%E5%87%BA%E5%8A%9B%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D/
http://2inc.org/blog/2013/07/27/3420/