• mintmind

    (@mintmind)


    タイトルの通りなのですが、子ページのスラッグが少々特殊になっています。
    親ページがparentA、panrentB、parentCとあって、その下にそれぞれおchild1、child2、child3があるような状態になっていて、さらにchild1を親にその下にparentABCもあります。
    図にすると以下のようになります。

    parentA
    – child1
    – child2
    – child3
    parentB
    – child1
    – child2
    – child3
    parentC
    – child1
    – child2
    – child3
    child1
    – parentA
    – parentB
    – parentC

    各名前はそれぞれスラッグ名となっています。
    /parentA/child1/と/child1/parentA/の両方があるような状態です。

    function pre_get_posts_custom($query) {
      if ( $query->is_page('child3') ) {
        $query->set( 'orderby', 'rand' );
      }
    }
    add_action( 'pre_get_posts', 'pre_get_posts_custom' );

    こうしてしまうと、parentABCのすべてのchild3に適用となってしまうので、たとえばparentCのchild3にだけ処理を適用させるにはどうしたらよいでしょうか?
    また逆に、parentABCを子に持つchild1の親ページにだけ適用させる方法も教えていただけると助かります。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • hokutonojikei

    (@hokutonojikei)

    mintmindさんこんにちは。

    $post->post_parentなどでページの階層を取得して
    条件分岐を増やす(if文やwhitch分を入れ子にする)というのはいかがでしょうか。

    http://elegumi.com/benno9/get-page-parent-child-parents-children

    階層の取得は上記ページにまとめてくれていました。

    これであれば親の名前、子の名前を基順に条件を分けることができると思います。
    ソースは複雑にはなってしまうと思いますが。

    全体像がわかっていませんので予測ですが
    様々なカテゴリのページなどがランダムに生成されていくような場合は
    カテゴリ、タグなどの機能も合わせるといい場合があります。
    参考になりましたら幸いです。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「pre_get_postsで特定の子ページにだけ適用する方法」には新たに返信することはできません。