web-dev-qa-db-ja.com

親IDを知りながら、子供のスラッグから子供のIDを取得する

データを取得する必要がある階層があります。それはすでに両親の知識を持っている間に私が得る必要があるのは(ナメクジ名で)子供です。

Highest Known Parent Page (slug : 'parent')
|_ Child 1 (slug : 'child-1')
   |_ Page 1 (slug : 'page-1')
   |_ Page 2 (slug : 'page-2')
|_ Child 2 (slug : 'child-2')
   |_ Page 1 (slug : 'page-1')
   |_ Page 2 (slug : 'page-2')
|_ Child 3 (slug : 'child-3')
   |_ Page 1 (slug : 'page-1')
   |_ Page 2 (slug : 'page-2')

理想的には "page-2"を一貫して返す結果を得ようとしています、そして私はすでに "child-1"、 "child-2"、 "child-3"などを知っているループ内で作業しています。 3番目のレベルを照会する方法がわからないだけです。何か案は?

スラッグからページのIDを取得する簡単な方法があるので、おそらくこれを考えすぎているでしょう。もちろん、 "page-2"が何らかの理由で存在しない場合には、偶発事象をスクリプト化する必要がありますが、最初に正しいデータを取得する必要があります。

更新:

これが私が今取り組んでいるコードです。私はモデルを知っています。私はモデルの子供たちを知っています。私はすべてのモデルの子供たちの下に特定の子供たちを一人ひとり連れて行こうとしています。例えば、「仕様」ページです。それで、私は5-6の異なる「仕様」ページが私に返されることを望んでいます...それで、私はそれらに(動的に)リンクすることができます。

<?php
// get models id
$models = get_page_by_path( 'models' );

// get children of models page
$args = array(
    'post_type'      => 'page',
    'posts_per_page' => -1,
    'post_parent'    => $models->ID,
    'order'          => 'ASC',
    'orderby'        => 'menu_order'
);
$children_posts = new WP_Query( $args );
?>
2
Will Ashworth

あなたはpost_parentと共にWP_Queryのためにpagenameパラメータを使うべきです。 posts_per_pageを使用して、クエリを1つの投稿に限定してください。

$parent_id = get_the_ID();
$args = array(
    'post_type'      => 'page'
    'pagename'       => 'page-2',
    'post_parent'    => $parent_id,
    'posts_per_page' => 1
);
$posts = get_posts( $args );
$child = isset( $posts[0] ) ? $posts[0] : false;
if( $child ){
    //Do Something
}

理論的には、これは親IDを使用してslugによってあなたの希望する投稿をレンダリングするはずです。

1
Brian Fegter
<?php
// get models id
$models = get_page_by_path( 'models' );

// get children of models page
$args = array(
    'post_type'      => 'page',
    'posts_per_page' => -1,
    'post_parent'    => $models->ID,
    'order'          => 'ASC',
    'orderby'        => 'menu_order'
);

$children_posts = new WP_Query( $args );
0
Arman Gharibi

あなたはすでに get_page_children を見ましたか?子ページのIDと$ children_postsをそれに渡す必要があり、それはそれのすべての子ページを返します...

必要なもの:child-1-> ID、child-1、child-2などの配列

0
alxndrbauer