WordPress 按字母顺序列出子页面

发布于 2024-11-06 05:13:58 字数 306 浏览 0 评论 0原文

我有一个父页面,其中包含大约 200 个子页面,它们构成了一个词典。在父页面的模板中,我希望查询允许以下列表。我想显示以该字母开头的每组单词的第一个字母。如果列表中没有出现某个字母,则不应显示该字母。

A

阿尔伯特

·艾伦·

阿曼达

B

比尔·

鲍勃

·布鲁诺

C

查尔斯·

克里斯汀

等等......

I have a parent page with about 200 child pages which constitute a lexicon. In the template of the parent page, I would like a query have allows the following listing. I want to show the first letter for every group of words that starts with that letter. If a letter is not represented in the list, it should not be shown.

A

Albert

Allan

Amanda

B

Bill

Bob

Bruno

C

Charles

Christine

and so on....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

望笑 2024-11-13 05:13:58

我的回答对你来说来晚了,但也许有人会发现它有用。我需要同样的东西,所以我必须编写这个模板:

<?php
/*
Template Name: Alphabetic
*/
?>


<?php get_header(); ?>
<div class="container">

    <div id="content" role="main">
    <h2 class="entry-title"><?php the_title(); ?></h2>                              
        <?php

        $my_wp_query = new WP_Query();
        $all_wp_pages = $my_wp_query->query(array('post_type' => 'page'));

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

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

        ?>

        <table style="border:none;">
            <tr>

            <?php

            $col = 4; //how many columns

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

                echo '<td style="border:none;">';

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

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

                echo '</td>';

            } ?>

            </tr>
        </table>

    </div><!-- #content -->
</div><!-- #container -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

My answer comes late for you but maybe someone will find it useful. I needed the same thing so I had to write this template:

<?php
/*
Template Name: Alphabetic
*/
?>


<?php get_header(); ?>
<div class="container">

    <div id="content" role="main">
    <h2 class="entry-title"><?php the_title(); ?></h2>                              
        <?php

        $my_wp_query = new WP_Query();
        $all_wp_pages = $my_wp_query->query(array('post_type' => 'page'));

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

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

        ?>

        <table style="border:none;">
            <tr>

            <?php

            $col = 4; //how many columns

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

                echo '<td style="border:none;">';

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

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

                echo '</td>';

            } ?>

            </tr>
        </table>

    </div><!-- #content -->
</div><!-- #container -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文