显示一级wordpress的父母和他们的孩子

时间:2012-09-06 12:43:53

标签: php wordpress

我想在wordpress的网站页脚显示网站链接。我想要获取一个深度的所有页面及其子页面。

然后我想在三列中显示它们,就像总共有8页一样,然后这些应该在第一至第二列第三列中显示3-3-2。新手到wordpress。

任何人都可以帮忙

我试过这个,但不知道我怎么能在3-3-2中对齐它们

     <?php
  $counter = 0;
     $parent_pages = $wpdb->get_results("SELECT *  FROM $wpdb->posts WHERE post_parent = '0' AND ID <> 2 AND post_type = 'page' ORDER BY menu_order", 'OBJECT'); ?>
  <?php if ( $parent_pages ) : foreach ( $parent_pages as $pageParent ) : setup_postdata( $pageParent ); ?>
  <?php $counter++; ?>
    <div class="linkSection">
      <ul>
       <li><a href="<?php echo  get_permalink($pageParent->ID); ?>"><?php echo $pageParent->post_title; ?></a></a> </li>
       <?php  
          $child_pages = $wpdb->get_results("SELECT *  FROM $wpdb->posts WHERE post_parent = '".$pageParent->ID."' AND ID <> 2 AND post_type = 'page' 
          ORDER BY menu_order", 'OBJECT'); ?>
         <?php if ( $child_pages ) : foreach ( $child_pages as $pageChild ) : setup_postdata( $pageChild ); ?>
          <li><a href="<?php echo  get_permalink($pageChild->ID); ?>"><?php echo $pageChild->post_title; ?></a></a> </li>
         <?php endforeach; endif; ?>



      </ul>
  </div>
  <?php endforeach; endif; ?>

1 个答案:

答案 0 :(得分:0)

$counter = 0;
$cnt = 0;
$parent_pages = $wpdb->get_results("SELECT *  FROM $wpdb->posts WHERE post_parent = '0' AND ID <> 2 AND post_type = 'page' ORDER BY menu_order", 'OBJECT'); ?>
<?php if ( $parent_pages ) : foreach ( $parent_pages as $pageParent ) : setup_postdata( $pageParent ); ?>
<?php $counter++; ?>
<div class="linkSection">
    <ul>
        <li><a href="<?php echo  get_permalink($pageParent->ID); ?>"><?php echo $pageParent->post_title; ?></a></a> </li>
            <?php  
            $child_pages = $wpdb->get_results("
                SELECT *  
                FROM $wpdb->posts 
                WHERE post_parent = '".$pageParent->ID."' 
                      AND ID <> 2 
                      AND post_type = 'page' 
                ORDER BY menu_order", 'OBJECT'); 

                // define prefix and postdix for columns (3 in a row display)
                $pre = '<div class="row_3">';
                $pos = '</div>';

                if ( $child_pages )
                {
                    foreach ( $child_pages as $pageChild ) 
                    {
                        setup_postdata( $pageChild ); 
                        echo (($cnt%3==0 || $cnt==0) ? $pre:'').
                              '<li>
                                <a href=".'get_permalink($pageChild->ID).'">'.$pageChild->post_title.'</a>
                              </li>'
                            .(($cnt%3==0 || $cnt==0) ? $pos:'');
                        $cnt++;
                    }
                    $cnt = 0;
                }
            ?>
    </ul>
</div>
<?php endforeach; endif; ?>

那我做了什么?首先,我重新格式化你的代码。是的,我知道,WP使用的是那种风格,但对我来说这是不好的。比我添加前缀\后缀的链接列表。和循环计数器。

工作原理:在循环中,我们用$cnt++;计算每次迭代。在每个打印中,我们检查它是否是第三行,如果是 - 我们在行中添加前缀和后缀。

现在你可以调整“row_3”的css样式,使其成为3行显示。