楽天セール開催中!ポイント最大11倍! セール会場へ

SWELL│新着記事リストを表示するカスタマイズ

swell-news-list

このページではカード型と行型の2種類を紹介します。

どちらも公開済み・パスワードなしの通常投稿を新しい順に表示します。

標準の投稿リストブロックで足りる場合はPHPを追加する必要はありません。

SWELLで新着記事リストを表示するには投稿リストブロックを使います。

しかし表示内容のカスタマイズの応用が利かない場合があります。

その場合はテンプレートを自作して表示することができます。

WordPressの関数を使う例ですが、別テーマでの表示や既存CSSとの組み合わせは個別に確認してください。

本記事ではそのカスタマイズ方法の備忘録になります。

※テンプレートを使わないfunctions.phpだけのバージョンも追記しました。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

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とファイル名を一致させます。

保存先はサイトごとに異なるため、既存のSFTP接続などで有効な子テーマの場所を確認してください。

<?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

テンプレート版はnumで件数を指定し、掲載コードでは1〜20件の範囲に調整されます。

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幅での確認で、同じ構成のスマホ幅とキャッシュプラグインの組み合わせは未検証です。

子テーマの実テンプレートから5行の新着記事を表示
子テーマの実テンプレートから5行の新着記事を表示。2026年10月3日、隔離したWordPress 7.1.2 / SWELL 2.19.0で撮影。

まとめ

トップページのカスタマイズ等でよく使う新着記事リストのカスタマイズ。

自分の好きなようにカスタマイズしたい場合は、ぜひこの記事を参考にしてみてください。

以前のコードはGitHubのMOTOKI-LLC/WAZA-codeにもまとめています。

戻すときは投稿内のショートコードを外し、追加した関数・登録行・専用CSSを変更前の内容へ戻します。

テンプレート版は子テーマのmotoki_news.phpもバックアップへ戻してください。

公開前に、投稿0件、画像なし、カテゴリなし、長いタイトル、スマホ幅、Tabキーでリンクへ移動してEnterで開けることを確認します。

  • URLをコピーしました!

実装を任せたい方へ

SWELLのカスタマイズ代行

記事のコードをそのまま使うのが不安な場合や、サイトに合わせた調整が必要な場合は当社が実装します。1時間 ¥8,000〜(税込)。テーマ更新に強い書き方で納品します。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次