WordPress: Как заказать дочерние страницы в меню выбора? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть поле выбора, которое позволяет вам перемещаться между родительскими страницами и их дочерними элементами, им присваивается определенный порядок, чтобы отображать их определенным образом на веб-сайте.

Я считаю, чтострока кода, которая вас интересует, возможно, это

$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 голосов
/ 07 марта 2019

Проблема решена добавлением sort_column=menu_order

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

Просто быстрая заметка, &echo=0 бесполезна, вы можете удалить ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...