WordPress Postで投稿が反映されない?原因と対策の備忘録

[PR] 当サイトはアフィリエイト広告による収益を得ています。

wordpress postで記事を投稿したのに、一向に表示されない。IDも表示されてるし、成功してるはずなのに・・・。

「うまくいくはずなのに、なぜ?」、このようなことはプログラミングではよくあります。こういったプラグインはもともと使用するハードルが高いのもあり一筋縄ではいかないとは予想していました。しかし正常に動いてるように見えるのに、投稿された記事が見つからないというわけのわからない状況には流石に困惑してしまいます。

何度試しても同じ結果が得られるため、バグではないと判断しました。再現性のある不具合はバグではなく、使用方法の誤解や理解不足が原因であることがほとんどだからです。

試行錯誤の末、なんとか問題を解決することができました。同じ問題に遭遇した方のために、解決するまでの過程を共有したいと思います。

結論から言うと、原因はディレクトリ構造にありました。記事ごとにフォルダを作成し、その中に本文(mdファイル)や画像を格納する厚生にしていたため、フォルダ名以外はどの記事でも同じになっていました。WordPress Postはファイル名をスラッグとして使用するため、毎回ファイル名が同じだと、新規投稿ではなく既存の同一スラッグの記事を上書きしてしまうようです。投稿一覧を新規投稿順に並べても改稿の場合は表示されないため、原因に気づくのに時間がかかりました。

wordpress postで記事を投稿する流れ

・設定ファイルに投稿先や認証情報を記述
・投稿したいファイルでwordpress postを実行

問題点

投稿が成功するとメッセージでIDが表示されます。誤った認証情報を入力して失敗させた場合は、IDは表示されませんでした。

成功時のメッセージ:
成功時のメッセージ
失敗時のメッセージ:
失敗時のメッセージ
成功した場合は記事が投稿されているはずですが、見つからないことがあります。

投稿が成功してるのに表示されない理由

IDが表示され、投稿に成功してるように見えるのに記事が見つからないのは、既存の記事を上書き更新しているからです。私の環境では投稿一覧を新しい順に並べても表示されませんでした。この辺はプラグインでいじってないのでデフォルトだとこういう挙動になると思われます。テーマによる影響は不明です。

既存の記事を上書きしてしまう理由

wordpress postによる投稿時に既存の記事を上書きしてしまう理由を理解するにはスラッグについて知る必要があります。スラッグは、投稿を一意に識別するための識別子です。WordPress Postで記事を投稿する際、デフォルトではファイル名がスラッグとして使用されます。そのためファイル名が毎回同じだとスラッグが重複し、既存の記事が上書き更新されてしまいます。

毎回ファイル名が同じになる理由

記事を管理するためのディレクトリ構造は人によって異なるので、すべての記事でファイル名が同じものになってしまう人もいればそうでない人もいるでしょう。残念ながら私は前者だったのこのような問題が発生してしまいました。どれくらい同じような構成の人がいるのかわかりませんが、参考までに私がどのようなディレクトリ構成で記事を管理しているのか紹介します。

私は以下のような構成にしています。

Title

│  content.md

└─images

content.mdに記事を書いてimagesには使用する画像などを保存しています。これらは毎回拡張機能でテンプレートから複製しており、Titleの部分以外は変更しません。

vscodeの拡張機能にはテンプレートフォルダー内にある任意のフォルダーを複製するものがあります。これを使ってフォルダを複製しているのですが、テンプレートからフォルダを作成する際にフォルダ名を設定しますが、ほかは全部テンプレートのままです。

このような執筆スタイルでは、スラッグが毎回”content”になってしまいます。そのためWordPress Postで投稿した際に以前投稿した記事を上書き更新してしまいます。これらは明示的にスラッグを指定することで対策可能です。やり方は後で解説します。

記事が投稿されているか確かめる方法

本当に記事が投稿されているのか確かめる簡単な方法があります。表示されたID、またはスラッグを使って記事を検索してみましょう。明示的に指定してない場合はファイル名がスラッグになります。

IDで検索する(推奨)

アドレスバーに以下のように入力して検索しましょう。
https://{ブログのドメイン}/?p={投稿ID}

ドメインや投稿IDは適宜書き換えてください。私のブログを例にすると以下のように検索します。666はこの記事のIDです。
https://sakakiyohei.com/?p=666

IDとドメインは適宜置き換えてください。

スラッグで検索する場合

URLのスラッグ部分に、検索したい記事のスラッグを入力します。パーマリンクの構造によって、スラッグの位置は異なります。

このブログの場合は”https://sakakiyohei.com/{スラッグ}/”となっています。

設定を確認してみましょう。
パーマリンクの設定

postnameの部分がスラッグです。

スラッグを指定する方法

ファイル名を変更することでスラッグの重複は回避できますが、フォルダ名とファイル名の両方を設定するのはめんどくさいですよね。ファイル名以外でスラッグを指定する方法があるのでそれを使用しましょう。

mdファイルの先頭に以下のように書くことでスラッグを指定できます。これなら重複する可能性はかなり低くなります。

---
slug: "my-unique-slug-2025-02"
---

この—で囲まれた部分をフロントマターといいます。記事のスラッグを指定する以外にも様々な設定が可能です。

フロントマターについて

フロントマターを使用することでメタデータを詳細に設定できます。キーを指定して値を設定します。キーはあらかじめ決められています。詳しくはこちらを参照してください。

Posts – REST API Handbook | Developer.WordPress.org
Schema

次のように記述することでタイトルと記事のステータスとスラッグを指定して投稿することが可能です。

---
title: "Wordpress Postでハマったときの備忘録"
status: publish
slug: "my-unique-slug-2025-02"
---

下書き状態で投稿したい場合は以下のように記述します。

---
title: "Wordpress Postでハマったときの備忘録"
status: draft
slug: "my-unique-slug-2025-02"
---

statusには、publish(公開)、draft(下書き)、pending(レビュー待ち)、private(非公開)などを指定できます。詳しくは以下のページを参照してください。

Posts – REST API Handbook | Developer.WordPress.org
Schema

コメント

タイトルとURLをコピーしました