我正在尝试创建单页主题。
我的问题是理解整个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?
艾伦
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\' );