我有一个包含子项的主页面。现在我的问题是,是否可以将主页面链接直接链接到其中的子项目? E.g。
- 主页(链接到第2页)
---第2页
这是我的代码:
<div id="MainNav">
<ul>
<?php wp_list_pages('exclude=3&sort_column=menu_order&title_li=&depth=1'); ?>
</ul>
</div>
<div id="leftCol">
<?php if($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } else { ?>
<?php } ?>
</div>
答案 0 :(得分:1)
乍一看,看起来你的方法应该有效。没有关于你的问题的更多信息,真的不能说更多。
作为替代方案,我在我维护的博客上做了类似的事情,但需要对输出进行更多控制。所以我最终完成了自己的功能。我是这样做的:
// Generate the subnav for a page
// Returns a list of links to child pages
// if there are no children, returns a blank list
function get_subnav($page_id)
{
$current_page = get_page($page_id);
if ($current_page->ancestors) {
$child = get_page($page_id);
$ancestor_id = $child->ancestors[0];
$page = get_page($ancestor_id);
} else {
$page = get_page($page_id);
}
$children = get_children('post_parent=' .
$page->ID . '&post_type=page&post_status=publish&order=ASC&orderby=menu_order');
if ($children) {
$html = '';
foreach ($children as $child) {
$html .= "<li><a href='" . get_page_link($page->ID) . "'>" . get_post_meta($page->ID, 'nav_name', true) . "</a></li>\n";
}
} else {
return false;
}
return $html;
}
我称之为:get_subnav($post->ID)
请注意,它不会爬过整个子页面树。如果您从子页面调用它,它将使用其第一个祖先作为根节点构建导航。
答案 1 :(得分:0)
我不明白。
您提供的代码不会抛出任何错误(即使在调试模式下也是如此)。你问这是否有效?如果是的话,是的。如果它不适合您,请告诉我们您的规格以及您添加此主题的位置。
此外,您应该使用$post->post_parent
而不是$wp_query->post->post_parent
。如果某人一直在使用自定义查询并在循环中调用它们$post
,那么它会更安全。
答案 2 :(得分:0)
我之前通过创建一个自动重定向到第一个孩子的页面模板来完成此操作。也许你可以使用它。在名为tofirstchild.php的模板目录中添加一个文件并将其放入其中:
<?php
/*
Template Name: Redirect To First Child
*/
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
$pagekids = get_pages( "post_parent=" . $post->ID . "&sort_column=menu_order" );
$firstchild = $pagekids[0];
wp_redirect( get_permalink( $firstchild->ID ) );
}
}
?>
然后在管理区域中,为“关于我们”页面选择“重定向到第一个孩子”模板。