I’m trying to create a shortcode base on the following code:
<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; // grabs the current post id from global and then assigns it to thispage ?>
<?php $pagekids = get_pages("child_of=".$thispage."&sort_column=menu_order"); // gets a list of page that are sub pages of the current page and assigns then to pagekids ?>
<?php if ($pagekids) { // if there are any values stored in pagekids and therefore the current page has subpages ?>
<ul>
<?php wp_list_pages("depth=1&title_li=&sort_column=menu_order&child_of=".$thispage); // display the sub pages of the current page only ?>
</ul>
<?php } elseif($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); if ($children) { // if there are no sub pages for the current page ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>
</ul>
Out of the question, this is a really good resource since it returns the child pages and even brother’s pages.
ok back to the game…. I trying to create a short code based on this, however if not working, so far I have this:
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');
I have spent around 3 hours trying to find where the error is, and my head is about to explode, I would appreciate any kind of help on this.
Thank in advance.
A shortcode has to return just a string, you should not print something like in
wp_list_pages()
orecho
. From Shortcode API:Your problem is that shortcode content appears before other content instead of where you want? If yes, you can solve this by:
The Output section of https://codex.wordpress.org/Shortcode_API recommends this pattern.