サポート » プラグイン » Bogoプラグイン使用時、get_postsで投稿を取得すると全部の言語が対象になる

  • 解決済モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)


    Bogoプラグインを使用し、多言語サイトを構築中です。
    ドキュメントが見つけられずちょっと悩んでいることがあるのでこちらにて質問します。

    自作テーマのfront-page.phpで、get_postsでサブループを作成し、特定のカテゴリーの投稿を任意の件数表示させている箇所があります。
    (表示設定にて、固定ページ「HOME」をトップページに設定しています)

    このとき、get_postsで取得できるのは、今どの言語のサイトを表示しているのかにかかわらず
    全部の言語の投稿の中の、最新の投稿◯件を取ってきてしまいます。

    何らかの引数を渡したり、カスタマイズを加えたりすることで
    get_postsで 「今見ている言語の投稿から◯件取得」というようなことは可能なのでしょうか?
    (もしくは、明示的に「日本語の記事のうち○件取得」ということは、どうでしょうか)

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター Takayuki Miyoshi

    (@takayukister)

    これは get_posts のデフォルトのパラメタでは 'suppress_filters' => true が指定されているためです。これを false に指定することで Bogo のフィルタが働き、特定の(デフォルトでは現在の)言語の投稿のみ取得できるようになります。

    取得する言語を明示したい場合は 'lang' => 'ja' のように lang パラメタを追加してください。

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    ありがとうございます!
    たしかに日本語版Codexにもそのように記載がありますね。

    注意: get_posts は ‘suppress_filters’ => true をデフォルトとします。一方、query_posts() はデフォルトでフィルタを適用するので、WPML のようにクエリを変更するプラグインを使う場合はややこしく感じるかもしれません。また、’suppress_filters’ が true の場合でも、pre_get_posts に追加されたフィルターは適用されます。’posts_*’ と ‘comment_feed_*’ に追加されたフィルターのみ、抑制されます。

    suppress_filtersについて今までほとんど気にしたことがなかったので、良いきっかけになりました。また1つ理解が深まりました。ありがとうございました。

    おかげさまで希望通りの挙動になりました。
    Bogoプラグインもさらに便利に使わせていただきます。

    ##
    suppress_filtersについて、参考にした2つの記事を紹介させていただきます。
    http://hijiriworld.com/web/wp_query/
    http://wpxtreme.jp/multiple-order-parameter-in-query-posts-and-get-posts

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「Bogoプラグイン使用時、get_postsで投稿を取得すると全部の言語が対象になる」には新たに返信することはできません。