Single page theme

时间:2013-06-29 作者:Zayatzz

我正在尝试创建单页主题。

我的问题是理解整个wordpress查询逻辑。

有一个查询对象,假设我得到了所有发布的帖子,如下所示:

$query = new WP_Query( array ( 
    \'orderby\' => \'menu_order\', 
    \'order\' => \'ASC\', 
    \'post_type\' => array( \'page\' ), 
    \'post_status\' => array( \'publish\' ) ) );
可以像这样绕过它们:

while ( $query->have_posts() ) {
    $query->the_post();
    echo \'<li>\' . the_title() . \'</li>\';
}
但那又怎样?我甚至想不出那个抄本——我可以使用的post对象的所有功能在哪里?喜欢\\u title()?那在抄本里的什么地方?

我想要实现的似乎非常简单明了-加载所有带有嵌套子页面的页面,然后只需在单个页面上打印它们,类似于上面的循环。。。但这本抄本快把我逼疯了:P

但这是最好的方法吗?我是否应该在其他地方定义我的查询(而不是像我现在这样定义index.php)?我应该以某种方式使用wordpress原始页面加载来显示使用模板(如果有)的页面,还是使用类似于内容页面的内容。像默认主题那样的php?

艾伦

3 个回复
最合适的回答,由SO网友:Rarst 整理而成

WordPress查询实际上由WP_Query 对象。您的代码段示例是辅助查询,而不是主查询,它在核心加载期间由WP自己运行,并存储在全局$wp_query 变量

通常(为了性能和兼容性)更好地修改页面主要帖子集的主查询-请参阅pre_get_posts hook documentation.

当您运行查询循环时,所发生的是WP填充了全局变量的数量(主要是$post) 包含当前职位的数据。访问这些变量和输出信息的函数(例如the_title()) 被称为template Tags 食品法典委员会list of them 这应该让你开始了。

SO网友:s_ha_dum

通常,“单页”是指通过Javascript操作内容的网站。我不知道你是不是想这么做。如果事实如此,听起来似乎不是,所以我假设现在不是。

WordPress填充查询for all of the major pages. 该默认查询通常称为“主查询”,它存储在global 已调用变量$wp_query, 除非另有说明,否则循环函数将假定该值。换句话说,这。。。

if (have_posts()) {
  while (have_posts()) {

  }
} 
。。。与此相同。。。

if ($wp_query->have_posts()) {
  while ($wp_query->have_posts()) {

  }
} 
通常,您不应该也不需要为这些基本页面创建新查询。如果需要更改查询,可以通过pre_get_posts.

您提到的其他函数--the_title, 等--是"Template Tags"

我应该以某种方式使用wordpress原始页面加载来显示使用模板(如果有)的页面,还是使用类似于内容页面的内容。像默认主题那样的php?

可能是的。但是,我也不是百分之百确定你在做什么。

SO网友:rfrq

根据

我想要实现的似乎非常简单明了——加载所有带有嵌套子页面的页面,然后在单个页面上打印出来

我猜他想创造一个一页纸的主题http://dev.zeotheory.com/micropage/ .知道你的主题有多复杂会很有帮助。基本上,您可以从更改主页上的主查询开始pre_get_posts 和条件标记is_home 仅显示顶级页面。这可以通过将其添加到函数中来实现。php:

function show_all_pages_on_index( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set(\'post_type\', \'page\');
        $query->set(\'showposts\', \'-1\');
        $query->set(\'post_parent\', \'0\');
    }
}
add_action( \'pre_get_posts\', \'show_all_pages_on_index\' );

结束

相关推荐

Custom Page Templates

我正在尝试找到添加页面模板的功能。我正在添加存档,但当我进入页面->添加新->时,我在侧栏中没有使用现有存档的选项。我想使用的php文件。有人能帮我吗?