我想在Shortcode中显示Wordpress中的所有页面。 我的代码看起来像这样:
function createTilesFromSites() {
$args = array(
'sort_order' => 'ASC',
'sort_column' => 'post_title',
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'meta_key' => '',
'meta_value' => '',
'authors' => '',
'child_of' => 0,
'parent' => -1,
'exclude_tree' => '',
'number' => '',
'offset' => 0,
'post_type' => 'page',
'post_status' => 'publish'
);
$pages = get_pages($args);
foreach ($pages as $page_data) {
$content = apply_filters('the_content', $page_data->post_content);
$title = $page_data->post_title;
$slug = $page_data->post_name;
echo "$title <br />";
}
}
add_shortcode('createTiles', 'createTilesFromSites');
现在,它显示了我的页面(我的页面被称为“1”,“2”,“3”,“4”和“博客”)。所以它应该给我一些类似的东西:“1234Blog”。 它给我打印了这个,但不仅仅是一次。 它确实是2658次(至少铬用cmd + f表示它,无论如何,它超长)。所以我的输出看起来像这样:“1234Blog1234Blog1234Blog1234Blog1234Blog1234Blog1234Blog1234Blog1234Blog1234Blog”例如。
代码有问题吗?这可能是我的Wordpress设置的一个问题吗?
感谢您的帮助。
答案 0 :(得分:0)
我认为您的apply_filters代码将再次调用您的短代码,因此它将处于循环中。因此,您可以尝试在不应用过滤器的情况下获取内容,或从内容中删除短代码,或调用remove_shortcode('createTiles');