我正在尝试根据我正在查看的页面制作一个菜单项列表。例如,如果我在页面历史记录中,我有一个菜单,其中包含历史记录下的所有子类别以及这些子类别中的帖子。菜单项也必须是可点击的。
基本上我想要这个:
MAIN CAT = pagename
SUB CAT1
- post1
- post2
SUB CAT2
- post1
- post2
到目前为止,这是我一直在攻击的内容:
<div id="menu">
<ul>
<?php
$page_title = wp_title();
preg_replace( "/[^a-z0-9 ]/i", "", $page_title);
strtolower($page_title);
$cat_id = get_cat_ID($page_title);
//get terms (e.g. categories or post tags), then display all posts in each retrieved term
$taxonomy = 'category';// e.g. post_tag, category
$param_type = 'category__in'; // e.g. tag__in, category__in
$term_args=array(
'orderby' => 'name',
'order' => 'ASC',
'child_of' => '$cat_id'
);
$terms = get_terms($taxonomy,$term_args);
if ($terms) {
foreach( $terms as $term ) {
$args=array(
"$param_type" => array($term->term_id),
'post_type' => 'post',
'post_status' => 'publish',
'showposts' => -1,
'ignore_sticky_posts'=> 1
);
$my_query = null;
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
echo '<li><a href="' . get_category_link( $term->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $term->name ) . '" ' . '>' . $term->name. '</a> ';
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<ul><li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li></ul>
<?php
endwhile;
}
}
}
wp_reset_query(); // Restore global post data stomped by the_post().
?>
</ul>
提前致谢!
答案 0 :(得分:1)
我曾经用过一段时间做某事,希望它有所帮助。
<?php
$current_id = $post->ID;
$args = array(
'orderby' => 'name',
'order' => 'ASC',
);
$nav_query = new WP_Query( $args );
?>
<ul>
<?php if ( $nav_query -> have_posts() ) : while ( $nav_query->have_posts() ) : $nav_query -> the_post(); ?>
<li class="clearfix">
<?php $current_class = ( $current_id == $post->ID ) ? 'class="current"' : ''; ?>
<a <?php if ( $current_class ) echo $current_class; ?> href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile; ?>
</ul>
<?php endif; wp_reset_query(); ?>
答案 1 :(得分:0)
我自己想通了!
<div id="menu">
<ul>
<?php
$page_title = strtolower(wp_title( '', false, 'right' ));
$clean = str_replace('’', '', $page_title);
$clean = preg_replace('/[^A-Za-z0-9\-]/', '', $clean);
$category = get_category_by_slug($clean);
if ($category != null) {
global $cat_id;
$cat_id = $category->term_id;
//get terms (e.g. categories or post tags),
//then display all posts in each retrieved term
$taxonomy = 'category';// e.g. post_tag, category
$param_type = 'category__in'; // e.g. tag__in, category__in
$term_args=array(
'orderby' => 'name',
'order' => 'ASC',
'child_of' => $cat_id
);
$terms = get_terms($taxonomy,$term_args);
if ($terms) {
foreach( $terms as $term ) {
$args=array(
"$param_type" => array($term->term_id),
'post_type' => 'post',
'post_status' => 'publish',
'showposts' => -1,
'ignore_sticky_posts'=> 1
);
$my_query = null;
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
echo '<li>'. $term->name. '</li>';
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<ul><li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li></ul>
<?php
endwhile;
}
}
}
wp_reset_query(); // Restore global post data stomped by the_post().
}//endif
?>
</ul>
</div>