0

我想在 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; ?>
4

1 回答 1

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 行显示。

于 2012-09-06T21:13:38.327 回答