Как можно получить доступ к ближайшим подстраницам?

Можете ли вы помочь мне понять, как изменить данный код на PHP для получения только прямых вложенных страниц, а не всех подряд?
  • 30 ноября 2023 г. 18:58
Ответы на вопрос 3
Ваши вопросы не полностью понятны без примера существующего PHP-кода, который вы хотите изменить. Однако, предположим, что вы хотите извлечь прямых потомков определенной страницы в WordPress. В этом случае вам следует использовать WP_Query или get_pages с указанием аргумента 'child_of'. 

Хотя вы не предоставили код, который нужно изменить, я все равно предлагаю пример того, как это может быть сделано в WordPress:

```php
// ID родительской страницы
$parent_id = 1; 

$args = array(
    'child_of' => $parent_id,
    'parent' => $parent_id,
);

$pages = get_pages( $args );

foreach( $pages as $page ) {
    echo $page->post_title;
} 
```

Вместо '1' укажите ID страницы, подстраницы которой вы хотите получить. Этот код получит только прямые (ближайшие) подстраницы указанной страницы.

Важно: 'child_of' получает всех потомков, включая внуки и т.д., а 'parent' - только прямых потомков. Чтобы получить только прямые подстраницы, вам нужно использовать именно 'parent'.
Опция 'numberposts' => -1 позволяет рекурсивно получить все страницы, являющиеся подстраницами заданной. Если вы не укажите параметр родителя, вернутся только те страницы, для которых parent_id равен ID указанного родителя. Для остальной информации обратите внимание на код ниже. Имейте в виду, что $id в данном случае равна 1. Если у заданной страницы нет дочерних страниц, программа выведет соответствующее сообщение. 

```php
$id = 1;

$config = [
  'parent' => $id,
  'post_type' => 'page',
  // 'numberposts' => -1,
  'post_status' => 'publish',
];

$child = get_pages($config);

if($child) {
  foreach($child as $page) {
    echo $page->ID;
  }
} else {
  echo 'У этой страницы нет дочерних страниц.';
}
```

Если вы раскомментируете строку '// 'numberposts' => -1', функция get_pages вернет все подстраницы независимо от их уровня вложенности. Если эта строка останется закомментированной, функция вернет только непосредственные подстраницы указанного родителя.
Похожие вопросы