Webサイトのお困りごとはこちらへ

Snow Monkeyの人気記事を自動管理する方法|WordPress Popular Postsでデザインを合わせる

ハシビィくん

Snow Monkeyを使ってるんすけど、人気記事を手動で管理するのが面倒っす!何かいい方法はないっすか?

カピーさん

それならプラグインを使うのがおすすめだぞ。

Snow Monkeyには「WPAW:ランキング」という人気記事機能があります。ただし、表示する記事は管理画面から手動で指定する仕組みです。

「アクセス数の多い記事を自動で表示したい」「人気記事の入れ替え作業を減らしたい」という場合は、WordPress Popular Postsを使う方法があります。

今回は、WordPress Popular Postsで人気記事を自動管理しながら、Snow Monkeyのランキングウィジェットに近いデザインで表示する方法を紹介します。

目次

Snow MonkeyとWordPress Popular Postsの違い

Snow Monkeyのランキング機能は手動管理

Snow Monkey標準の「WPAW:ランキング」は、管理者が表示したい記事を選んで登録する機能です。

特定の記事を常に表示したい場合には便利ですが、アクセス数に応じてランキングを自動更新する機能ではありません。

Snow Monkeyの「WPAW:ランキング」ウィジェットが表示されない場合の対処法でも紹介されているように、Snow Monkeyの標準ランキング機能は、記事を手動で管理したい場合に向いています。

WordPress Popular Postsは人気記事を自動管理

WordPress Popular Postsでは、以下のような条件で人気記事を表示できます。

  • 全期間の人気記事
  • 直近24時間の人気記事
  • 直近7日間の人気記事
  • 直近30日間の人気記事
  • サムネイル付きの人気記事

集計期間や表示件数を設定できるため、人気記事の入れ替え作業を減らせます。

WordPress.org
WP Popular Posts A highly customizable, easy-to-use popular posts plugin!

PHPでWordPress Popular PostsのHTMLを変更する

WordPress Popular Postsのデフォルト表示
WordPress Popular Postsをカスタマイズしたランキング画像
Snow Monkey風にカスタマイズした表示

PHPコードは、親テーマのファイルへ直接追加しないでください。

以下のいずれかに追加します。

  • My Snow Monkey
  • 子テーマのfunctions.php
/**
 * WordPress Popular PostsをSnow Monkey風に表示する
 */
add_filter(
	'wpp_custom_html',
	function( $popular_posts, $instance ) {
		ob_start();
		?>

		<div class="wpaw-ranking">
			<ul class="wpaw-ranking__list wpaw-posts-list">

				<?php foreach ( $popular_posts as $popular_post ) : ?>

					<?php
					$post = get_post( $popular_post->id );

					if ( ! $post ) {
						continue;
					}

					setup_postdata( $post );

					$terms = get_the_terms( get_the_ID(), 'category' );
					?>

					<li class="wpaw-ranking__item wpaw-posts-list__item">
						<a href="<?php the_permalink(); ?>">

							<div class="wpaw-ranking__figure wpaw-posts-list__figure">
								<?php if ( has_post_thumbnail() ) : ?>
									<?php the_post_thumbnail( 'thumbnail' ); ?>
								<?php endif; ?>
							</div>

							<div class="wpaw-ranking__body wpaw-posts-list__body">

								<?php if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) : ?>
									<div class="wpaw-ranking__taxonomy wpaw-posts-list__taxonomy">
										<span class="wpaw-ranking__term">
											<?php echo esc_html( $terms[0]->name ); ?>
										</span>
									</div>
								<?php endif; ?>

								<div class="wpaw-ranking__title wpaw-posts-list__title">
									<?php the_title(); ?>
								</div>

								<div class="wpaw-ranking__date wpaw-posts-list__date">
									<?php echo esc_html( get_the_date() ); ?>
								</div>

							</div>
						</a>
					</li>

				<?php endforeach; ?>

			</ul>
		</div>

		<?php
		wp_reset_postdata();

		return ob_get_clean();
	},
	10,
	2
);

このコードでは、人気記事ごとに以下を出力しています。

  • アイキャッチ画像
  • カテゴリー
  • 記事タイトル
  • 投稿日
  • 記事へのリンク

wp_reset_postdata()は、人気記事の出力後に元の投稿データへ戻すために記述しています。これを入れないと、ページ下部の関連記事や他の投稿情報に影響する可能性があります。

CSSでSnow Monkey風に整える

PHPでHTMLを変更したら、次にCSSを追加します。

CSSのみの調整であれば、WordPress管理画面の「追加CSS」を使う方法もあります。Snow Monkey公式でも、CSSだけの変更には追加CSSを利用する方法が案内されています。

My Snow Monkeyを使うのももちろんありです。

/* 人気記事一覧 */
.wpaw-posts-list {
	list-style: none;
	margin: 0;
	padding-left: 0;
}

/* 人気記事の間隔 */
.wpaw-posts-list__item:not(:first-child) {
	margin-top: var(--_margin-1);
}

/* リンク */
.wpaw-posts-list__item > a {
	display: flex;
	flex-flow: row;
	color: inherit;
	text-decoration: none;
	transition:
		opacity var(--_global--transition-duration)
		var(--_global--transition-function-timing)
		var(--_global--transition-delay);
}

/* ホバー時 */
@media (any-hover: hover) {
	.wpaw-posts-list__item > a:hover {
		opacity: 0.8;
	}
}

.wpaw-posts-list__item > a:focus-visible {
	opacity: 0.8;
}

/* サムネイル */
.wpaw-posts-list__figure {
	position: relative;
	flex: 0 0 auto;
	width: 90px;
	height: 90px;
	margin-right: 1em;
	overflow: hidden;
	background-color: var(--_color-gray);
}

.wpaw-posts-list__figure > img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 50%;
}

/* 本文 */
.wpaw-posts-list__body {
	display: flex;
	flex: 1;
	flex-flow: column;
	min-width: 0;
}

/* タイトル */
.wpaw-posts-list__title {
	margin-bottom: var(--_margin-2);
	font-size: var(--_font-size);
	line-height: var(--_line-height);
	--_font-size-level: -1;
}

/* カテゴリー */
.wpaw-posts-list__taxonomy {
	margin: 0 0 3px;
	line-height: 1;
}

/* 投稿日 */
.wpaw-posts-list__date {
	margin-top: auto;
	font-size: var(--_font-size);
	line-height: var(--_line-height);
	--_font-size-level: -2;
}

/* ランキング順位 */
.wpaw-ranking {
	counter-reset: wpaw_ranking 0;
}

.wpaw-ranking__item {
	position: relative;
}

.wpaw-ranking__item::before {
	position: absolute;
	top: 0;
	left: 0;
	z-index: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 20px;
	height: 20px;
	color: var(--wp--preset--color--white);
	background-color: var(--wp--preset--color--black);
	font-size: 12px;
	font-weight: 700;
	line-height: 1;
	content: counter(wpaw_ranking);
	counter-increment: wpaw_ranking 1;
}

/* 1〜3位の色 */
.wpaw-ranking__item:first-child::before {
	background-color: rgb(230, 179, 36);
}

.wpaw-ranking__item:nth-child(2)::before {
	background-color: rgb(199, 198, 198);
}

.wpaw-ranking__item:nth-child(3)::before {
	background-color: rgb(151, 107, 47);
}

Snow Monkeyの既存デザインに合わせる場合は、サイトで使用しているアクセントカラーや文字サイズに合わせて調整します。

スマートフォン表示を確認する

サイドバーに設置した人気記事は、スマートフォンでは表示幅が狭くなります。

以下の点を確認してください。

  • サムネイルが大きすぎないか
  • タイトルが読みにくくなっていないか
  • 長いタイトルでレイアウトが崩れていないか
  • リンクのタップ範囲が狭くなっていないか

デフォルトのSnow Monkeyであれば表示崩れはないと思いますが、サムネイルサイズなどをカスタマイズされている方は、微調整が必要になります。

WordPress Popular Postsが自動更新されない場合

人気記事が変わらない場合は、次の項目を確認します。

カピーさん

稀にこの症状が出てくることもあるぞ。

集計期間を確認する

全期間で設定している場合、過去にアクセスを集めた記事が長期間上位に残ることがあります。

最近読まれている記事を表示したい場合は、直近7日間や30日間など、期間を区切って設定します。

キャッシュを削除する

キャッシュプラグインやサーバー側のキャッシュによって、ランキングがすぐに更新されない場合があります。

設定変更後は、以下のキャッシュを削除して確認してください。

  • WordPressのキャッシュ
  • サーバーキャッシュ
  • ブラウザキャッシュ
  • CDNキャッシュ

サムネイルを確認する

記事にアイキャッチ画像が設定されていない場合、サムネイルが表示されません。

画像を表示したい場合は、各記事にアイキャッチ画像を設定しておきます。

アップデート後の表示を確認する

Snow MonkeyやWordPress Popular Postsのアップデート後は、HTML構造やCSSの適用状態を確認してください。

Snow Monkeyのクラス名を利用する方法は、既存のデザインを再利用しやすい一方、テーマ側の仕様変更の影響を受ける可能性があります。

カピーさん

この数年はアップデートで非表示になることはないが、今後どうなるかはもちろん不明だからチェックは必須だ。

手動管理と自動管理の使い分け

手動管理が向いているケース

  • 特定の記事を常に表示したい
  • サービス記事やキャンペーン記事を優先したい
  • 人気度よりも運営者の意図を重視したい
ハシビィくん

「人気記事」に自社サービスの紹介記事を入れて誘導したりと使い方は無限大!

自動管理が向いているケース

  • 人気記事の入れ替え作業を減らしたい
  • 閲覧数をもとに記事を表示したい
  • 定期的にランキングを更新したい
  • 多数の記事を運営している

Snow Monkeyの標準ランキングとWordPress Popular Postsは、どちらか一方が優れているというより、目的が異なります。

任意の記事を見せたい場合はSnow Monkey標準のランキング、実際によく読まれている記事を自動表示したい場合はWordPress Popular Postsが向いています。

実体験

実際に使って分かったこと

Snow Monkey自体はとてもシンプルなテーマとなっており、Webメディアサイトのテーマとして採用されることもあります。

私の実例としては、自動表示にすることで普段を管理コストを下げたいという例がありました。
この際にはプラグインを導入して解決。

更に複雑なパターンとしては、Snow Monkeyの人気記事とWordPress Popular Postsで2パターンのランキングとしてターゲットを変えた例です。

一般読者を想定したランキング(WordPress Popular Posts)

転職者&新卒をターゲットにしたランキング(Snow Monkey)

というように使い分けをするケースもありました。

全てを自動化するのではなく、運営者が見せたい記事を掲載する場所として利用するのが強みのカスタマイズで人気の組み合わせですね。

まとめ:Snow Monkeyの人気記事を自動管理する方法|WordPress Popular Postsでデザインを合わせる

Snow Monkeyで人気記事を自動管理したい場合は、WordPress Popular Postsを利用すると便利です。

WordPress Popular Postsの表示調整や、Snow Monkeyの既存カスタマイズとの干渉確認が必要な場合は、OWNのWordPressスポット修正をご相談ください。

Snow Monkeyの人気記事を自動管理する方法|WordPress Popular Postsでデザインを合わせる
  • Snow Monkey標準のランキング機能は手動で記事を管理する。
  • WordPress Popular Postsなら人気記事を自動集計できる。
  • PHPとCSSを調整すれば、Snow Monkeyに近いデザインで表示できる。
この記事をシェアする

コメント(承認制)

コメントする

目次