하위 페이지를 만들 수 있도록 페이지 속성이있는 사용자 지정 게시물 유형이 있습니다. h1에 상위 페이지의 제목을 표시 한 다음 반복하여 하위 페이지의 내용을 표시하려고합니다. 아래 코드는이 작업을 거의 수행하지만 첫 번째 비트에서도 하위 페이지를 h1 제목으로 출력하므로 하위 페이지 제목이 중복됩니다. 하위 페이지를 제외하고 루프의 첫 번째 부분에 표시되지 않도록하려면 어떻게해야합니까?
감사합니다.
<?php
echo "<ul>";
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
echo "<li><h1>".get_the_title()."</h1>";
$args=array(
'orderby' => 'menu_order',
'order' => 'ASC',
'post_parent' => $post->ID,
'post_type' => get_post_type( $post->ID ),
'posts_per_page' => 10
);
$childpages = new WP_Query($args);
if($childpages->post_count > 0) { /* display the children content */
echo "<ul>";
while ($childpages->have_posts()) {
$childpages->the_post();
echo "<li><h2>".get_the_title()."</h2></li>";
echo "<li><h2>".the_content()."</h2></li>";
}
echo "</ul>";
}
wp_reset_query();
echo "</li>";
}
}
echo "</ul>";
?>
업데이트 : 조금 더 나아갈 수있었습니다. 이제 하나의 하위 게시물 (최신) 만 볼 수 있으며 동일한 하위 게시물이 다른 하위 게시물이 아니지만 각 상위 제목 아래에 복제됩니다.
누구든지이 마지막 부분을 못하도록 도와주세요. 감사.
<?php $parent_pages = get_pages( array(
'parent' => 0,
'post_type'=> 'archive'
));
foreach( $parent_pages as $parent_pages)
{ ?>
<h1><?php echo $parent_pages->post_title; ?></h1>
<?php
$children = get_pages(array(
'orderby' => 'menu_order',
'order' => 'ASC',
'post_parent' => $post->ID,
'post_type' => get_post_type( $post->ID )
));
foreach($children as $child);
?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php } ?>
업데이트 : @robbintt 제안을 시도하고 있습니다. 지금 여기 있습니다. get_page_children을 올바르게 사용하고 있는지 확실하지 않으며 이제 "구문 오류 : 구문 오류, 예기치 않은 T_AS, 예상 ';' "
<?php
$parent_pages = get_pages( array(
'parent' => 0,
'post_type'=> 'archive'
) );
for ( $parent_pages as $parent_page { ?>
<h1><?php echo $parent_page->post_title; ?></h1>
<?php
$all_pages = get_pages()
$child_pages = get_page_children($parent_pages->ID, $all_pages );
for ( $child_pages as $child_page ) { ?>
<h2><?php echo $child_page->post_title; ?></h2>
<p><?php echo $child_page->post_content; ?></p>
<?php } ?>
업데이트 : 도움을 주신 @robbintt 덕분에 마지막 작업 코드가 있습니다.
<?php
$parent_pages = get_pages( array( 'parent' => 0, 'post_type'=> 'archive' ) );
foreach ( $parent_pages as $parent_page ) {
echo '<h1>';
echo $parent_page->post_title;
echo '</h1>';
$all_pages = get_pages(array( 'post_type'=> 'archive' ) );
$child_pages = get_page_children($parent_page->ID, $all_pages );
foreach ( $child_pages as $child_page ) {
echo '<h2>';
echo $child_page->post_title;
echo '</h2>';
echo '<p>';
echo $child_page->post_content;
echo '</p>';
}
}
?>
표준을 사용하여 여기에서 루프를 조금 남용하고 있습니다 while ( have_posts() ) {}
.
대신 부모 페이지를 대상으로 한 다음 for 루프를 사용하여 자식 페이지를 가져옵니다.
/* here we include only pages with no parent */
$parent_pages = get_pages( 'parent' => 0 )
foreach ( $parent_pages as $parent_page ) {
/* Proceed as you have inside the while loop, targeting $parent_page each time */
}
원하는대로 정렬 할 수 있도록 나머지 문서는 다음과 같습니다. http://codex.wordpress.org/Function_Reference/get_pages#Parameters
2 부:
다음으로 요청 된 섹션, 하위 페이지에 대한 정보를 얻는 방법은 다음과 같습니다.
http://codex.wordpress.org/Function_Reference/get_page_children
이 함수는 페이지 하위 배열을 반환합니다. 여기서 핵심은이 루프가 실제로 모든 상위 페이지를 가져 오는 다른 루프 내에서 실행된다는 것입니다.
$all_pages = get_pages( array( 'post_type'=> 'archive' ) )
$child_pages = get_page_children($parent_page->ID, $all_pages );
foreach ( $child_pages as $child_page ) {
/* proceed with any calls on child page such as ID/title, in the format $child_page->ID */
어떻게되는지 알려주세요! 우리가 사용하는 새로운 함수는 다음과 같습니다. http://codex.wordpress.org/Function_Reference/get_page_children
파트 3 :
여기에서는 하위 페이지 섹션에 대한 코드를 약간 정리했습니다. 많은 일이 있었기 때문에 HTML을 에코하는 방법을 표준화하고 단순화했으며 더 많은 줄을 추가했습니다. 이로 인해 디자인 패턴이 사람의 눈에 훨씬 더 잘 보입니다.
<?php
$parent_pages = get_pages( array( 'parent' => 0, 'post_type'=> 'archive' ) );
foreach ( $parent_pages as $parent_page ) {
echo '<h1>';
echo $parent_page->post_title;
echo '</h1>';
$all_pages = get_pages( array( 'post_type'=> 'archive' ) );
$child_pages = get_page_children($parent_page->ID, $all_pages );
foreach ( $child_pages as $child_page ) {
echo '<h2>';
echo $child_page->post_title;
echo '</h2>';
echo '<p>';
echo $child_page->post_content;
echo '</p>';
}
}
?>
다음은이 코드의 원본입니다. http://codepad.org/pLtFCI1l
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다