WP作り方/WPカスタマイズ

PHPで新着情報を表示させる (ワードプレス)

ワードプレスにて新着情報をPHPで表示させるコードの書き方、カスタマイズ方法をお知らせします。TOPページ(フロントページ)に ↓ こんなような新着情報をのせるやり方です。

新着情報(任意のカテゴリー もしくは全部の新着情報)のPHP埋め込み方/PHPの呼び出しの仕方は、様々あります。

プラグインで読んだり、PHPにダイレクトに記載したり、ショートコードで呼び出す仕組みを作ったり。

中でも、ショートコードで呼び出す仕組みは、簡単に実装できて、どのページへも組み込み可能で便利。

新着情報の呼び出し方のパターン↓

  1. プラグインを使う (簡単でPHPなどの知識要らず !でもサイトが重くなる)
  2. PHPにダイレクトに書く。(ダイレクトに記載していると、テンプレートのアップグレード時に消えてしまうことも。)
  3. PHPを呼び出すショートコードを自分で作る(PHPを少しさわれるぐらいの知識が必要。でも軽い)

SEO対策でのスピード項目などを考えるとできれば、なるべくプラグインは使用したくなかったので、PHPで新着情報を設置してみることにしました。

3.PHPを呼び出すショートコードを自分で作る方法

まずはFunction.phpに以下コードを書きます。Function.phpの場所は /wp-content/themes/ご自身のご利用のテーマ名/ Function.php にあります。

function my_php_Include($params = array()) {
extract(shortcode_atts(array('file' => 'default'), $params));
ob_start();
include(STYLESHEETPATH . "/$file.php");
return ob_get_clean();
}
add_shortcode('myphp', 'my_php_Include');

上記コードにより Function.phpと同じ階層にあるPHPを記事編集画面からショートコードとして、呼び出せるようになりました。

そして新着情報に(表示させたい)呼び出したい、記事やカテゴリーを編集して、任意の名前でPHPを作成します。例:whatsnew.php

post_type post (投稿のこと), Page(固定ページのこと)  
category_name 投稿のカテゴリーで決定したスラッグ名  
posts_per_page 任意の数字  
<?php
$news_query = new WP_Query(
  array(
'post_type' => 'post',
'category_name' => 'newarticle',
'posts_per_page' =>  '3 '
 
  )
);
?>
<?php if ( $news_query->have_posts() ) : ?>

  <?php while ( $news_query->have_posts() ) : ?>
    <?php $news_query->the_post(); ?>
    <div class="newsbox1 alignleft"> <?php the_post_thumbnail('thumbnail'); ?><br />
<?php the_time('Y/m/d') ?> <br />
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div>
  <?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>

上記のように編集したPHPファイルをwhatsnew.phpという名前で保存して、Function.phpと同じ階層にUPします。

PHP新着情報

階層はこんな感じです↑

そして、記事本文に以下のショートコードを記入することで、新着情報/任意のカテゴリーの新着情報が呼び出されます。

[myphp file='whatsnew']

同じカテゴリの記事を表示するPHP↓

上の新着記事PHPを実装したら、次はSEO対策上必ず必要になる、同じカテゴリの記事をページの下に表示するPHPコードです

<?php
$post_id = get_the_ID(); // 投稿のIDを取得する
$categories = get_the_category($post_id); // 投稿のカテゴリーを取得
$cat_ids = []; // カテゴリーIDを格納するためのカラの場所を用意

foreach ($categories as $category) :
  array_push($cat_ids, $category->term_id); // 用意したカラの場所にカテゴリーIDを格納
endforeach;

$args = [
  'post_type' => 'post', // 投稿タイプを指定
  'posts_per_page' => '3', // 表示する記事数を指定
  'category__in' => $ramen, // カテゴリーIDを指定
  'post__not_in' => [$post_id] // 現在の投稿を除外
];

$related_cats_query = new WP_Query($args);
?>

<div class="related-posts">
  <?php if ($related_cats_query->have_posts()) : ?>
    <ul>
      <?php while ($related_cats_query->have_posts()) : $related_cats_query->the_post(); ?>
        <li>
          <a href="<?php the_permalink(); ?>">
            <?php the_title(); ?>
          </a>
        </li>
      <?php endwhile; ?>
    </ul>
  <?php else : ?>
    <p>関連記事はありません。</p>
  <?php
  endif;
  wp_reset_postdata(); ?>
</div>

そして上のPHPをrecommendarticle.PHPかなんかで保存して、function.phpと同じ階層にUPします。

するとあーら不思議、WPの編集画面上から以下のショートカット呼び出しで、関連記事が呼び出されるのです

[myphp file='recommendarticle']

いかがでしょうか?簡単じゃないですか? 筆者はワードプレスのサイトは、基本的にプラグインを使わない方法で作りこんでいくのがSEOで上位表示される秘訣だと考えています。

こんな小さな機能だけのために、毎回プラグインを追加していくと、ワードプレスは重たくなるのがネック。

サイトスピードはSEO対策にも響いてきます。

筆者は画像・文章・日にちを呼び出していますが、不要な方は随時削除して、カスタマイズしてみてください。

さらに、このPHPで呼び出した新着情報をスライダーで動かしたい場合のやり方は以下の記事へ。

案外シンプルなこういう機能って、あまり見かけないんですよね。 でもPHPで簡単に実装できました。ふぅー。

ワードプレスのPHP周辺にちょっと知識を持てば、ちょっとしたカスタマイズは出来るようになります。

↓この講座なんかは、オンラインで体系的に学べるので、自己投資という意味でもおススメです。

あまり時間の無い方は、最初から新着情報の機能を搭載してくれている有料テンプレートを使用するのもおすすめです。

↓ 新着情報を表示させる機能や、その他必要な機能を搭載している、SEOに強そうなテンプレートばかりを紹介しています。

-WP作り方/WPカスタマイズ
-

© 2024 Web+coな Powered by AFFINGER5