このページではカード型と行型の2種類を紹介します。
どちらも公開済み・パスワードなしの通常投稿を新しい順に表示します。
標準の投稿リストブロックで足りる場合はPHPを追加する必要はありません。
SWELLで新着記事リストを表示するには投稿リストブロックを使います。
しかし表示内容のカスタマイズの応用が利かない場合があります。
その場合はテンプレートを自作して表示することができます。
本記事ではそのカスタマイズ方法の備忘録になります。
新着記事リストのサンプル(既存サイトのテンプレート使用版・掲載コードとの一致は未検証)
※テンプレートを使わないfunctions.phpだけのバージョンも追記しました。
SWELLで新着記事リストを自作する方法│追加版
追加版はfunctions.phpとCSSで作るカード型で、別のテンプレートファイルは使いません。
functions.phpの記述
作業前に子テーマのfunctions.phpと変更するCSSを保存し、管理画面が開けなくなった場合もSFTPなどで元のファイルへ戻せることを確認してください。
既存の同名関数・ショートコード登録があれば置き換え、重複して追記しないでください。
PHP開始タグの内側に以下を記述します。
親テーマには追加しません。
カード型はposts_per_pageで最大表示件数を指定し、掲載例では4件です。
WordPressの管理画面 > 外観 > テーマファイルエディター > functions.php
function motoki_news2() {
$items = get_posts(array('post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => 4, 'orderby' => 'date', 'order' => 'DESC', 'has_password' => false));
if (!$items) return '<p>公開記事はまだありません。</p>';
$out = '<div class="motoki_news_area">';
foreach ($items as $item) {
$id = $item->ID;
$categories = get_the_category($id);
$category = $categories ? $categories[0]->name : '';
$src = get_the_post_thumbnail_url($id, 'medium');
$image = $src ? '<img src="' . esc_url($src) . '" alt="" loading="lazy">' : '<span class="news2-placeholder" aria-hidden="true">画像なし</span>';
$out .= '<div class="news2-card"><a class="news2-link" href="' . esc_url(get_permalink($id)) . '">' . $image;
$out .= '<div class="news2-info"><div class="news2-title">' . esc_html(get_the_title($id)) . '</div>';
$out .= '<span class="news2-date">' . esc_html(get_the_date('Y/m/d', $id)) . '</span> <span class="news2-cat">' . esc_html($category) . '</span></div></a></div>';
}
return $out . '</div>';
}
add_shortcode('motoki_news2', 'motoki_news2');CSSを追加
以下は子テーマのstyle.css、または追加CSSに記述します。
画像なし・カテゴリなしにも対応し、画面幅600px以下では1列、それより広い画面では2列になります。
.motoki_news_area { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.5em; }
.motoki_news_area .news2-card { min-width:0; border:1px solid #ccc; border-radius:8px; }
.motoki_news_area .news2-link { display:block; height:100%; color:inherit; text-decoration:none; border-radius:8px; }
.motoki_news_area .news2-link:focus-visible { outline:3px solid #075aab; outline-offset:3px; }
.motoki_news_area img, .motoki_news_area .news2-placeholder { width:100%; aspect-ratio:16/9; object-fit:cover; border-radius:8px 8px 0 0; }
.motoki_news_area .news2-placeholder { display:grid; place-items:center; background:#eee; color:#333; }
.motoki_news_area .news2-info { padding:1em; overflow-wrap:anywhere; }
.motoki_news_area .news2-title { margin-bottom:1em; font-weight:700; }
.motoki_news_area .news2-date, .motoki_news_area .news2-cat { font-size:.85em; }
@media (max-width:600px) { .motoki_news_area { grid-template-columns:1fr; } }ショートコードから出力
最後に[motoki_news2]をショートコードブロックへ入力して新着記事リストの表示を確認しましょう。
カード型の既存サンプル(掲載コードとの一致は未検証)
以上です。
好きな条件を加えれば、テーマに関係なくお好みのブログカードが作れます。
テンプレートも使わないので、お手軽で良いです。
SWELLで新着記事リストを自作する方法│テンプレート使用版
過去に作った新着記事リストのやり方です。
早速、自作の新着記事リストを作ってみましょう。
テンプレートの格納
PHPを書いたテンプレートmotoki_news.phpを、有効になっている子テーマの直下に格納します。
親テーマへ直接追加せず、変更前のファイルをバックアップしてから作業します。
WordPressの設置先/wp-content/themes/有効な子テーマ/motoki_news.php
下記のコードをテキストエディタでコピペ。
motoki_news.phpというファイル名で、子テーマの直下に保存しました。
functions.phpから呼び出すmotoki_newsとファイル名を一致させます。
<?php
$num = isset($args['num']) ? max(1, min(20, absint($args['num']))) : 5;
$information = get_posts(array('post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => $num, 'orderby' => 'date', 'order' => 'DESC', 'has_password' => false));
if ($information): ?>
<div class="news-box"><ul>
<?php foreach ($information as $item):
$categories = get_the_category($item->ID);
$category = $categories ? $categories[0]->name : '';
?>
<li><a href="<?php echo esc_url(get_permalink($item->ID)); ?>">
<span class="news-date"><?php echo esc_html(get_the_date('Y.m.d', $item->ID)); ?></span>
<span class="news-cat"><?php echo esc_html($category); ?></span>
<span class="news-article"><?php echo esc_html(get_the_title($item->ID)); ?></span>
<span class="news-arrow" aria-hidden="true">→</span>
</a></li>
<?php endforeach; ?>
</ul></div>
<?php else: ?>
<p>公開記事はまだありません。</p>
<?php endif; ?>functions.phpの記述
続いて格納したテンプレートをショートコードで読み込みましょう。
作業前に子テーマのfunctions.phpと変更するCSSを保存し、管理画面が開けなくなった場合もSFTPなどで元のファイルへ戻せることを確認してください。
既存の同名関数・ショートコード登録があれば置き換え、重複して追記しないでください。
PHP開始タグの内側に以下を記述します。
親テーマには追加しません。
WordPressの管理画面 > 外観 > テーマファイルエディター > functions.php
function motoki_news() {
ob_start();
$args = [
'num' => 5, //新着記事数
];
get_template_part('motoki_news',null,$args);
return ob_get_clean();
}
add_shortcode('motoki_news', 'motoki_news');CSS
以下を子テーマのstyle.css、または追加CSSへ記述します。
タイトルは省略せず折り返します。
.news-box ul { padding:0; list-style:none; }
.news-box li { margin:0; border-bottom:1px solid #ccc; }
.news-box a { display:flex; flex-wrap:wrap; align-items:center; gap:.5em 1em; padding:1em; color:inherit; text-decoration:none; }
.news-box a:focus-visible { outline:3px solid #075aab; outline-offset:2px; }
.news-box .news-date { color:#555; }
.news-box .news-cat { border:1px solid #777; border-radius:4px; padding:0 .4em; }
.news-box .news-article { flex:1 1 12em; overflow-wrap:anywhere; }
.news-box .news-arrow { margin-left:auto; }以上です。
最後に[motoki_news]をショートコードブロックへ入力して新着記事リストの表示を確認しましょう。
実ファイルの読み込みと表示件数を確認する
| 確認項目 | 確認する内容 |
|---|---|
| ファイル | 有効な子テーマ直下のmotoki_news.php |
| 呼び出し側 | get_template_partの名前がmotoki_news |
| 件数 | テンプレート版はnum=5で最大5件 |
| 別のフィード方式 | waza_feed_newsを使って区別 |
テンプレート方式が空表示になる場合は、ショートコードを繰り返し貼る前にファイル名と保存先を確認します。
拡張子が.php.txtになっていないか、現在有効な子テーマへ保存したか、呼び出し側の名前と一致しているかを順に調べます。
get_template_partは子テーマのファイルを優先して探します。
2026年10月3日に、WordPress 7.1.2 / SWELL 2.19.0の隔離環境で本文のテンプレートを子テーマの実ファイルとして保存し、読み込みと5行の表示を確認しました。
最初の行をEnterで開き、対象の投稿へ到達しています。
この画面はテンプレート使用版の結果です。
追加版のmotoki_news2とテンプレート版のmotoki_newsは別の方式なので、表示したい方を選んで設置します。
num=5は最大件数であり、対象の公開投稿が5件未満なら行数も少なくなります。
別サイトのRSSを取得する方式も併用する場合は、そちらの新しい登録名waza_feed_newsを使います。
同じmotoki_newsへ2つの処理を登録すると、後の処理に上書きされて取得元が変わります。
戻すときは設置したショートコードを外し、子テーマのmotoki_news.phpと追加した登録用PHP、専用CSSをバックアップへ戻します。
親テーマのファイルは変更しません。
2026年10月3日の実ファイル設置試験はPC幅での確認で、同じ構成のスマホ幅とキャッシュプラグインの組み合わせは未検証です。

まとめ
トップページのカスタマイズ等でよく使う新着記事リストのカスタマイズ。
自分の好きなようにカスタマイズしたい場合は、ぜひこの記事を参考にしてみてください。
以前のコードはGitHubのMOTOKI-LLC/WAZA-codeにもまとめています。
戻すときは投稿内のショートコードを外し、追加した関数・登録行・専用CSSを変更前の内容へ戻します。
テンプレート版は子テーマのmotoki_news.phpもバックアップへ戻してください。
公開前に、投稿0件、画像なし、カテゴリなし、長いタイトル、スマホ幅、Tabキーでリンクへ移動してEnterで開けることを確認します。







