WPワークス

ダウンロードコンテンツやワードプレスのカスタマイズ方法を配信中。

タグアーカイブページで起こったワードプレス関数「get_posts」の不具合について

「get_posts」 不具合かも
「get_posts」 不具合かも

テーマ「ShapeShifter」のバージョン1.0.15の更新情報にも書き込みましたが、クエリエラーの不具合についてです。

ワードプレスには投稿リストを取得する「get_posts」という便利な関数が用意されているのですが、とある条件下で使用すると原因不明の不具合が起こることに気付き、自分ではよくわからなかったので、ワードプレスのフォーラムにも書き込んでみました。

回答待ちしているんですが、ここでも何が起こったか紹介しておきます。

案外、自分が何かミスっているのかもしれませんけどね。

「get_posts」で起こった不具合

テーマ「ShapeShifter」に実装しているウィジェットには、投稿リストを出力する物があるのですが、投稿データを取得する際にワードプレス関数「get_posts」を使用しています。

「get_posts」は指定した条件に合うページのデータを配列で取得できる関数なんですが、「タグアーカイブページ」で取得した場合のみ、何故か投稿タイプ(「投稿ページ」や「固定ページ」など)を指定しても無視されるだけでなく、本来取得されない筈の投稿タイプ「nav_menu_item」が取得されたんです。

投稿タイプ「nav_menu_item」は公開用の投稿タイプではありませんので、そもそもパーマリンクが用意されていませんから、そのページにアクセスしても「404エラー」となりますし、タイトルなども設定されていませんから、何も表示されない謎のリストアイテムが出力されるような状態になっていました。

他のページ、例えば、「投稿ページ」や「固定ページ」、「フロントページ」、「ブログページ」、「カテゴリーアーカイブ」、「作者アーカイブ」などのページでは確認できませんでしたので、それ以上は未確認ですが、「タグアーカイブ」では起こる可能性があるようでした。

他のテーマでは試していませんので、何とも言えないんですが、「僕だけなのかな?」とフォーラムに書いてみたという次第です。

テーマ「ShapeShifter」での対処

テーマ「ShapeShifter」のバージョン1.0.15では、取り敢えず指定した投稿タイプ以外を取得されると困るので、投稿タイプが指定したもの(post)以外の場合は「continue」でループをスキップすることにしました。このため、万が一取得してしまった場合は、投稿数が表示数を満たしている場合でも、スキップした分表示されるリストアイテムの数が減ることになります。

実はまとめて全部取得して、表示していい場合に加算して数を合わせる方法もあるのですが、こちらの方が作業も楽だし、更新する時間が無かったので応急処置という形でそうしています。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

メニュ
ホーム
トップへ