【Blogger】data:newerPageUrlのバグ対処法
Bloggerテンプレートをカスタマイズしている際に、Bloggerデータタグを利用したページネーション・ポストページャー(前後の投稿記事へのリンク)の挙動がおかしくなる症状に遭遇し、解決したので報告します。
具体的には「新しい投稿(data:newerPageUrl)[1]のリンクが現在のページになってしまう」という症状です。
症状:テンプレートに関係なく「新しい投稿」がバグる
ブログの投稿ページにて、より新しい投稿が存在するにも関わらず「新しい投稿」ボタンのリンク先が常に現在の投稿ページのURLになってしまっていました。ただし古い投稿(data:olderPageUrl)ボタンは正常に機能していました。
最初はカスタマイズ中のテンプレートxmlファイルの構造や記述ミスが原因と考えましたが、以下の切り分けを行ったことで原因はおそらくコードではないことがわかりました。
- コードの位置を変えてもダメ[2]
- 別のブログで正常に動くテンプレートを適用しても同じバグが発生
- 同じテンプレートを別のテストブログに適用すると正常に動く
つまり、「特定のブログでのみ、どのテンプレートを使ってもdata:newerPageUrlが現在のページのURLを返してしまう」という状態でした。
原因:Bloggerサーバー側の不具合?
特定のブログでのみ問題が発生するということで、当該ブログ管理画面の設定や投稿の設定を確認してみました。特に、日時や表示に関する設定をいくつか変更したり変更後にもとに戻して確認しました。
試したが効果がなかったこと
- 「タイムゾーン」の変更
- 「読者の権限」の変更
- 「メインページに掲載する投稿の上限」の変更
- 「ブログフィードを許可」の設定を変更
- 新しい投稿を作成し公開
- 既存投稿の公開日を編集し更新
効果があったこと
- 一旦全ての投稿を下書きに戻し、再度公開する
一部を再公開した時点で確認したところ、data:newerPageUrlが正しいURLを出力するようになりました。もしかしたら全ての投稿を下書きにする必要はなかったかもしれません。
完全な推測ですが、Blogger内部の投稿管理データベースに何らかの不具合があり、「下書きに戻してから再公開」という作業でそれが更新・修復されたのかもしれません。
今回はテストブログで数記事しかないため全投稿を下書きに戻しましたが、投稿が多い場合はバグが起き始めた時期の前後数件の投稿を下書きに戻し・再公開でも直るかもしれません。
なお、再公開した際の公開日時は下書きに戻す前の初投稿日になっていました。
まとめ
Bloggerデータタグdata:newerPageUrlを利用したページネーションが特定のブログでのみ正常に機能しませんでした。ブログ設定の変更や新規投稿・既存記事の更新では直りませんでしたが、投稿を下書きに戻し再度公開することで不具合が直りました。
原因の詳細は不明ですが、同様の不具合が出ているブログをお持ちの方は試してみてください。その際はコメント等でぜひご報告いただければ幸いです。
