Я пытаюсь создать базу шорткодов:
<ul class="filter">
<li>Filter:</li>
<li class="link-store"><a href="<?php echo get_permalink( 23 ); ?>">All</a></li>
<?php global $post; $thispage = $post->ID; // берет идентификатор текущей записи из глобального массива и затем назначает его этой странице ?>
<?php $pagekids = get_pages("child_of=".$thispage."&sort_column=menu_order"); // получает список страниц, которые являются подстраницами текущей страницы, и назначает их затем pagekids ?>
<?php if ($pagekids) { // если в pagekids хранятся какие-либо значения, и поэтому текущая страница имеет подстраницы ?>
<ul>
<?php wp_list_pages("depth=1&title_li=&sort_column=menu_order&child_of=".$thispage); // отображать только подстраницы текущей страницы ?>
</ul>
<?php } elseif($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); if ($children) { // если для текущей страницы нет подстраниц ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>
</ul>
Вне всякого сомнения, это действительно хороший ресурс, поскольку он возвращает дочерние страницы и даже страницы брата.
Я пытаюсь создать короткий код:
function filter_store ( $atts ) {
global $post; $thispage = $post->ID;
if ($pagekids) {
$output .= '<ul>';
wp_list_pages("depth=1&title_li=&sort_column=menu_order&child_of=".$thispage);
$output .= '</ul>';
} elseif($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); if ($children) {
$output .= '<ul>';
echo $children;
$output .= '</ul>';
}
return $output;
}
add_shortcode('filter', 'filter_store');
Я потратил около 3 часов, пытаясь найти причину ошибки и был бы признателен за любую помощь в этом.
Заранее спасибо.

Ваша проблема в том, что шорткод появляется перед другим контентом, а не там, где вы хотите? Если да, вы можете решить эту проблему следующим образом:
Шорткод должен возвращать только строку, вы не должны печатать что-то вроде
wp_list_pages()илиecho.В разделе https://codex.wordpress.org/Shortcode_API рекомендуется этот шаблон. р>