如何创建一个按字母顺序显示子页面的函数? (WordPress的)

时间:2016-03-29 09:36:53

标签: php wordpress

我想要做的是创建一个字典页面,列出主词典页面的alphbaticlly子页面,但这只适用于前两个字母,然后停止,我不能似乎弄明白了为什么。

这是我的代码:

        <?php

    $my_wp_query = new WP_Query();
    $all_wp_pages = $my_wp_query->query(array('post_type' => 'page', 'orderby' => 'title', 'order' => 'ASC'));

    $children = get_page_children($post->ID, $all_wp_pages);

    $letter="";
    foreach ($children as $child)
    {
        $first_letter=strtoupper(substr($child->post_title,0,1));
        if($letter != $first_letter)
        {
            $alphabetic[]->post_title=$first_letter;
            $letter=$first_letter;
        }
        $alphabetic[]=$child;
    }

        $col = 1; //how many columns

        for($i = 0; $i < $col; $i++) {


                $nr = (int)(sizeof($alphabetic)/4);
                $i == $col - 1 ? $end = sizeof($alphabetic) : $end = $nr*($i+1);

                echo '<div>';

                for($j = $nr*$i; $j < $end; $j++) {
                    if(strlen($alphabetic[$j]->post_title)==1)
                        echo '</div><div class="dict-cell"><div class="dict-letter">', $alphabetic[$j]->post_title, '</div>';
                    else
                        echo '<div class="dict-term"><a href="'.get_permalink($alphabetic[$j]->ID).'">'.$alphabetic[$j]->post_title.'</a></div>';
                }

            echo '</div>';

        } ?>

2 个答案:

答案 0 :(得分:0)

您只需使用&#34; SORT_REGULAR&#34;为你排序类型

sort($..->post_title)

答案 1 :(得分:0)

如果有人试图做同样的事情,我会以不同的方式弄清楚这对我来说是完美的。

我的代码所做的是在字母表上运行循环,如果有特定ID的子页面,它将打印第一个字母,然后列出所有具有相同第一个字母的子页面,这样您就可以创建词汇表页面。

如果在他们赢得的某些字母下没有子页面的情况下也是如此,那么代码也是如此,所以你不会无缘无故地将空字母列表作为标题。

    <?php
    for ($letter = 'A'; $letter != 'AA'; $letter++) {
    $child_pages = $wpdb->get_results("SELECT *  FROM $wpdb->posts WHERE post_title like '$letter%' AND post_parent = '2523' AND post_status='publish'");
        if ( $child_pages ) { ?>

            <div class="dict-cell">
                <div class="dict-letter">
                    <?php echo $letter; ?>
                </div>

        <?php foreach ( $child_pages as $pageChild ) { ?>
            <div class="dict-term">
                <a href="<?php echo get_permalink($pageChild->ID); ?>" rel="bookmark"><?php echo $pageChild->post_title; ?></a>
            </div>

     <?php } echo '</div>';  } } ?>