WordPress:如何在选择菜单中订购子页面?

时间:2019-03-07 16:34:50

标签: php wordpress

我有一个选择框,它使您可以在父页面及其子页面之间导航,并为其指定特定的顺序,以便以某种方式在网站上显示它们。

我相信您感兴趣的代码行可能就是这个

$children = get_pages("title_li=&child_of=" . $parent . "&echo=0");

完整代码如下。您可以看到站点上页面的顺序与选择菜单中页面的顺序不同,这是因为wordpress按order进行排序,我的页面按字母顺序排序。如何按顺序对它们进行排序,以使您在网站上看到的内容与选择框匹配?

<?php

// determine parent of current page

if ($post->post_parent)
    {
    $ancestors = get_post_ancestors($post->ID);
    $parent = $ancestors[count($ancestors) - 1];
    }
  else
    {
    $parent = $post->ID;
    }

$children = get_pages("title_li=&child_of=" . $parent . "&echo=0");
?>
<div id="info-select-wrap" class="single-france-select">
                        <select id="info-select"class="fr-select" >
                        <?php

if (get_the_ID() == $parent->ID): ?>
                        <option value="<?php
    echo get_the_permalink($parent->ID); ?>" selected>&#xf00c; &#xf29c; <?php
    echo get_the_title($parent->ID); ?></option>
                    <?php
else: ?>
                    <option value="<?php
    echo get_the_permalink($parent); ?>"> &#xf29c; <?php
    echo get_the_title($parent); ?></option>

                            <?php
endif;

foreach($children as $child):
    if (has_children($child))
        {
        if (get_the_ID() == $child->ID)
            { ?>
                                        <option value="<?php
            echo get_the_permalink($child->ID); ?>" selected>&#xf00c; &#xf29c; <?php
            echo get_the_title($child->ID); ?></option>
                                    <?php
            }
          else
            { ?>
                                        <option value="<?php
            echo get_the_permalink($child->ID); ?>">&#xf29c; <?php
            echo get_the_title($child->ID); ?></option>



                                <?php
            }
        }
      else
        {
        if (get_the_ID() == $child->ID)
            { ?>
                                        <option value="<?php
            echo get_the_permalink($child->ID); ?>" selected> &#xf00c; <?php
            echo get_the_title($child->ID); ?></option>
                                    <?php
            }
          else
            { ?>
                                        <option value="<?php
            echo get_the_permalink($child->ID); ?>"> <?php
            echo get_the_title($child->ID); ?></option>



                                <?php
            }
        }

endforeach; ?>
                        </select>
                    </div>

我尝试过

$children = get_pages("title_li=&child_of=" . $parent . "&echo=0&orderby='menu_order'&order='ASC'");

没有解决。

1 个答案:

答案 0 :(得分:0)

通过添加sort_column=menu_order

解决了此问题
$children = get_pages("title_li=&child_of=" . $parent . "&echo=0&sort_column=menu_order");

请注意,&echo=0没有用,您可以将其删除。