2017-01-17 80 views
1

私たちの現在のウェブサイトは、親/子投稿付きのカスタム投稿を使用しています。 (親)投稿を表示すると、プラグインが子投稿をプルするために使用され、それらはそのページのタブに表示されます。ワードプレスの親の投稿ページに子投稿を表示

現在、いくつかのWebサイトでこのカスタムテーマの新しいバージョンを使用しており、親子関係を使用していません。代わりに私たちはカスタムポストタイプのメタボックスを持っており、すべての追加情報をそこに提出することができます。

テーマの最新バージョンでこの特定のウェブサイトを更新したいと思いますが、親/子関係を使用しているので、同じ結果を達成して古いものを維持するためにテーマに数行のコードを追加したいそれらのすべてを変更するのではなく、それらの方法を投稿します。

私がしたいことは次のとおりです:親投稿ページにすべての子投稿を(順番に)表示する、非常に簡単な方法が必要です。

私はいくつかのアイデアをここで見つけましたが、これまでに何も起こっていないようです。 (ここに1つの例がある:http://www.wpbeginner.com/wp-tutorials/how-to-display-a-list-of-child-pages-for-a-parent-page-in-wordpress/と同様にhttps://wordpress.stackexchange.com/questions/153042/how-to-display-list-of-child-pages-with-parent-in-wordpress)。私はそれが私がページではなくポストを使用しているという事実と関係があるのか​​どうかわかりません。

私は子供の投稿のリストは望んでおらず、それらのコンテンツを直接表示しています。これを達成する最善の方法は、子投稿を取得してその結果をテンプレートにエコーする関数を作成することかもしれないと考えていました。そうすることで、私たちのテーマを変えることなく、別のウェブサイトでもうまくいく可能性があります。

EDIT:

これまでのところ、ここで私はsingle.php内試みたものです:

$new_args = array(
'order'   => 'ASC', 
'post_parent' => get_the_ID() 
); 
$new_query = new WP_Query($new_args); 
if ($new_query->have_posts()) { 
    while($new_query->have_posts()) { 
     $new_query->the_post(); 
      the_content(); 
    } 
wp_reset_query(); 
} 

:私は、その後にコードを変更し

$query = new WP_Query(array( 
    'post_parent' => get_the_ID(), 
)); 
while($query->have_posts()) { 
    $query->the_post(); 
    the_content(); //Outputs child's content as it is 
} 
wp_reset_query();` 

それはどちらか動作しませんでしたので、私はそれを変更しました:

$children = get_children(array('post_parent' => get_the_ID())); 
foreach ($children as $children_id => $children) { 
    the_title(); 
    the_content(); 
} 

最新のは、それが現在のポストはそれで子供を持っていることを「知っている」が、i」は、いくつかの結果を返すことができるようです現在の投稿のタイトルと内容を表示します。私はここでthe_content()を使ってはならないと確信しています。

+0

あなたは今metaboxesでこのparentchildロジックを保存する修正私が理解している場合あなたはおそらく、特定のメタデータ(と記事を選択するための追加のparamとしてmetaqueryでWP_Queryを使用する必要があります動作するはずです、それは本当ですか? )。 あなたが私たちにいくつかのコード/メタボックス構造またはカスタム投稿構造を少なくとも表示しない限り、私たちはあなたを助けることができません – Codeartist

+0

実際にメタボックスに表示されるコンテンツを実際には作らないようにしようとしていません。私が探しているのは、親投稿ページに子投稿コンテンツを表示する簡単な方法です。私はメタボックスについて少し情報を与えて、少し混乱させるかもしれません。私はデフォルトのポストタイプを使用していますが、私はそれにカスタマイズのビットを追加したので、それはカスタムポストタイプとは考えられないかもしれません。私はちょうど親のポストに子供のポストからの "通常の"コンテンツが欲しいです。 –

答えて

0

[OK]をループ内の投稿テンプレート内でこのようなものを試してみてください。特定の投稿内に子投稿を出力するのに役立ちます。 Somwhereループ内 /

$query = new WP_Query(array( 
     'post_parent' => get_theID(), 
     'posts_per_page' => 3, //shows only 3 children. If you want to show all of them, comment this line 
    )); 
    while($query->have_posts()) { 
     $query->the_post(); 
     /*Output the child markup here*/ 
     the_content(); //Outputs child's content as it is 
    } 
    wp_reset_query(); 
?> 

更新: [OK]を、あなたはIDの&配列をpost_parent__in使用しようとすることができ、これはあまりにも動作するはずです。ループ内 Somwhere/

$query = new WP_Query(array( 
     'post_parent__in' => array(get_theID()), 
     'posts_per_page' => 3, //shows only 3 children. If you want to show all of them, comment this line 
    )); 
    while($query->have_posts()) { 
     $query->the_post(); 
     /*Output the child markup here*/ 
    } 
    wp_reset_query(); 
?> 

ない場合は、ここにあなたがget_children機能を使用して得たポストの出力内容への道です。これはおそらく、あまりにも

<?php 
    $children = get_children(array('post_parent' => get_the_ID())); 
    foreach ($children as $children_id => $child) { 
     echo $child->post_title; 
     echo str_replace(']]>', ']]&gt;',apply_filters('the_content', $child->post_content)); //mimic the_content() filters 
     //echo $child->post_content; // if you do not need to filter the content; 
    } 
?> 
+0

ループ内でコードを使用しようとしましたが、この投稿に子があることがわかっていても何も返されません。 –

+0

single.php内で使用していますか?それはしばしば単一の投稿を出力するために使用されます。あなたのコードを教えていただけますか? – Codeartist

+0

元の投稿を編集して、私が試したコードを表示しました。私はそれが今のところ愚かなものだと確信していますが、私はそれを働かせるようには見えません。ご協力いただきありがとうございます。 –

関連する問題