wordpress

特定のカテゴリを指定または除外したサムネイル付きの関連記事を表示するphp

関連記事は表示したい。プラグインだとページごとに細かい使い分けができない。じゃあphpで書くしかないじゃないか!!
ということで色々調べたのでメモします。

今回やりたかったこと

前回の記事完全に無駄になってしまったような気がしないでもないですが、
わたしが今回やりたかったのは以下の3項目なんです。

  • 複数タグを取得した関連記事の表示
  • ただしイケm特定のカテゴリに限る
  • サムネイルの表示

一番上に関してはみんな大好きWEBクリエイターボックスさんの
この記事に書いてあるphpでバッチリだったので使わせて頂きました。

参考:プラグインを使わずWordPressに9の機能をつける | Webクリエイターボックス はてなブックマーク - プラグインを使わずWordPressに9の機能をつける | Webクリエイターボックス

こんな感じのphpを書いたら動いた!

マナさんのphpを参考に、2つくらい記述を足しただけです。

<?php
    $original_post = $post;
    $tags = wp_get_post_tags($post->ID);
    $tagIDs = array();
    if ($tags) {
        $tagcount = count($tags);
        for ($i = 0; $i < $tagcount; $i++) {
            $tagIDs[$i] = $tags[$i]->term_id;
                    }
    $args=array(
    'tag__in' => $tagIDs,
    'category__in' => array( n ),
    'post__not_in' => array($post->ID,'cat_ID'=>n),
    'showposts'=>4,
    'caller_get_posts'=>1
    );
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
    while ($my_query->have_posts()) : $my_query->the_post(); ?>
        
        
            <h4>
                <a href="<?php the_permalink();?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
                <?php the_title(); ?>
                </a>
            </h4>
            
            <?php the_post_thumbnail('medium'); ?>
        
<?php endwhile; wp_reset_query(); ?>
<?php } else { ?>
    関連する記事は見当たりません…
<?php } } ?>

補足説明

上記コードのピンクの部分が今回書き足した部分です。
あ、すいません。サムネイルの位置は超適当なので各自で調整してください。

  • 複数タグを取得した関連記事の表示
  • ただしイケm特定のカテゴリに限る ←これ
  • サムネイルの表示 ←これ

特定のカテゴリを指定する方法

一応、それぞれが何なのかの説明ですが、まず「特定のカテゴリに限る」を達成するには
以下の記述をすればOKです。

'category__in' => array( n )

nの部分はカテゴリIDを入れてください。
カンマで区切ると複数指定できます:)

特定のカテゴリを除外する方法

先ほどとは反対に、特定のカテゴリだけ除外したい場合は以下の記述をしたらOKみたいです。

'category__not_in' => array( n )

サムネイルを取得する方法

おなじみのこの記述ですね。

その前に、サムネイルを有効にするには、 functions.php に
add_theme_support( 'post-thumbnails' );
と記述しておく必要があります。

<?php the_post_thumbnail('medium'); ?>

mediumの部分にはサイズを記述できます。
数値で指定したい場合は以下のように記述するとそのサイズになるようです。

<?php the_post_thumbnail(array(100,100)); ?>

参考:テンプレートタグ/the post thumbnail - WordPress Codex 日本語版

と。こんな感じの記述をしたら、無事ページごとに表示する関連記事の属性をカスタマイズすることができました。
page1では「カテゴリ1でなおかつタグ1のもの」を表示し、page2では「カテゴリ1を除外しなおかつタグ1のもの」を表示
とかっていう一貫性のないカスタマイズをしたかったので、頑張りました( ー`дー´)キリッ

以上、霙でした。