Wordpress:显示所有页面

时间:2013-12-04 19:49:36

标签: php wordpress foreach

我想在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设置的一个问题吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为您的apply_filters代码将再次调用您的短代码,因此它将处于循环中。因此,您可以尝试在不应用过滤器的情况下获取内容,或从内容中删除短代码,或调用remove_shortcode('createTiles');