Q.
WordPressでトップページの一覧に表示される順は、カスタマイズできるのでしょうか?それと、一覧表示の際に、とあるページのみが2回表示され、そのかわり表示されていないページが出てきています。何か対策はありますか?
A.
はい、WordPressでトップページの一覧に表示される順番はカスタマイズ可能ですし、特定のページが2回表示され、他のページが表示されないという問題も対策可能です。以下で詳しく説明します。
① トップページ一覧の表示順のカスタマイズ方法
方法1:「投稿」の場合
投稿一覧の順番は基本的に「投稿日(新しい順)」ですが、以下の方法で変更できます:
A. プラグインを使う
- 「Post Types Order」プラグインを使うと、ドラッグ&ドロップで順番変更が可能。
- インストール後、
設定 → Post Types Order
で有効化 - 投稿一覧画面で並び替えができるようになります
- インストール後、
B. functions.phpにコードを追加(テーマ編集)
function custom_post_order($query) {
if ($query->is_home() && $query->is_main_query()) {
$query->set('orderby', 'title'); // タイトル順
$query->set('order', 'ASC'); // 昇順
}
}
add_action('pre_get_posts', 'custom_post_order');
※ orderby
は date
, title
, meta_value
などに変更可能です。
② 特定のページが2回表示され、別のページが表示されない件
このような問題は以下が原因の可能性があります:
✅ よくある原因と対策
原因 | 対策 |
---|---|
キャッシュの不具合 | キャッシュプラグイン(例:WP Super CacheやLiteSpeed Cache)を一度クリアしてみてください。 |
重複したクエリがある | カスタムクエリ(例えば query_posts() や WP_Query の使用)で同じIDを複数回呼んでいないか確認。 |
Sticky Posts(先頭固定) | 「先頭に固定表示」されている投稿が繰り返し表示されることがあります。確認して一度外してみてください。 |
同じコンテンツを複数回インクルード | テンプレート内でループが2回回っていないか、get_template_part() の誤用などを確認。 |
カスタムフィールドによるフィルタ | meta_query などで同じ条件のものが重複取得されている可能性あり。クエリの見直しが必要です。 |
③ 調査手順のおすすめ
- テーマを一時的に「Twenty Twenty-Four」などに変更 → 問題が解消すれば、テーマ側のコードが原因
- プラグインを一つずつ無効化して検証 → プラグインの干渉を確認
functions.php
やカスタムクエリの見直し
必要であれば、functions.php
や表示に使っているテンプレートのコードを貼っていただければ、具体的にチェックしますよ!
Q.
キャッシュプラグインは使っていないし、他のブラウザでは正常に表示されたので、Vivaldiのキャッシュの問題のようですね。
A.
なるほど、Vivaldi特有のブラウザキャッシュの問題だったんですね!それが原因で古い表示状態が残って、同じページが2回表示されたように見えていたのかもしれません。
✅ 解決方法:Vivaldiのキャッシュをクリアする手順
- 設定メニューを開く(画面右上のメニュー →「ツール」→「閲覧データの消去」)
- 「キャッシュされた画像とファイル」にチェック
- 期間は「すべての期間」を選択
- 「データを消去」ボタンをクリック
🔁 応急的にキャッシュ無視でリロードする方法
- Windows/Linux:
Ctrl + F5
- Mac:
Command + Shift + R
この問題はときどき他のブラウザでも起きますが、特にVivaldiやBraveなどChromiumベースのブラウザでキャッシュが強く効いていると起こりがちです。
それでもうまくいかない場合は、開発者ツール(F12
)を開いた状態でリロードすると、キャッシュを完全無視できます(「ネットワーク」タブで「キャッシュを無効にする」にチェック)。
また何か挙動が気になる場合は、お気軽にどうぞ!HTMLやテンプレート側の確認も一緒にできますよ。
Q.
Vivaldiで表示がおかしくなる(一覧ページに2回出るページと出ないページがある)件で、他のブラウザでは正常に表示されたので、Vivaldiの問題かとも思いました(別のPCでも同様に起きたので)が、VivaldiにおいてもWordPressからログアウトすれば正常に表示されることがわかったので、Vivaldiのせいでもないようでした。導入しているプラグインにも影響を及ぼしそうなものはなく、今後何か気付いたことがあればこの場で報告します。
A.
とても丁寧な検証、ありがとうございます!
現時点の状況を見ると、以下のような可能性が考えられますね:
🔍 状況のまとめ
- 他のブラウザでは正常 → WordPressやサーバー側の問題ではなさそう
- Vivaldiだけで発生 → ブラウザ依存に見える
- でもVivaldiでもログアウトすると正常 → ログイン状態による表示差
- プラグインに怪しいものはなし
✅ 考えられる原因(ログイン状態でのみおかしい)
1. テーマやテンプレートの中で、ログイン状態に応じて異なるクエリや条件分岐がある
is_user_logged_in()
やcurrent_user_can()
で分岐している場合、表示が変わることがありますpre_get_posts
フィルターでis_admin()
の扱いを間違えると、ログイン中のフロント表示にも影響することがあります
2. ログインユーザー用の表示制御プラグインが、裏でフィルターをかけている
- 例:会員制プラグインや、カスタムロール・権限変更プラグイン
- 投稿の表示制限がかかっていて、裏でリダイレクトや除外処理が動いている可能性あり
3. カスタムフィールドやメタ情報で絞り込みがあり、ログインユーザーにだけ異なる表示条件が適用される
meta_query
にログイン情報が絡んでいるパターン
🛠️ 調査ポイント
もし次のような項目がテーマやカスタム関数の中にあれば、チェックしてみてください:
if ( is_user_logged_in() ) {
// ログイン時だけ表示する何か
}
function custom_query_modification($query) {
if ( $query->is_home() && $query->is_main_query() && is_user_logged_in() ) {
// ログイン時だけクエリ変更
}
}
add_action('pre_get_posts', 'custom_query_modification');
✅ 一時的なテスト案
- テーマを一時的に「Twenty Twenty-Four」などに変更して再確認
functions.php
の内容を最小構成にして様子を見る- 表示に関わるプラグインを一つずつ一時停止して確認
- ブラウザのシークレットウィンドウでもログインして再現するか確認
今後、何かわかったことや再現条件などが判明したら、ぜひまた教えてください!
こちらでも一緒に原因を深掘りしていきます 🔍