所以我有一段代码可以抓住类别及其重合的帖子,并将它们列在循环之外(下图)。我一直试图将帖子链接到#post- [ID]而不是固定链接 - 但我一直都在失败。有人可以帮忙吗?
<ul id="sidebar">
<?php
foreach( get_categories('orderby=ID&order=desc') as $cat ) :
if( !$cat->parent ) {
echo '<li class="title"><h2><a href="#">' . $cat->name . '</a></h2>';
echo '<ul>';
process_cat_tree( $cat->term_id );
}
endforeach;
wp_reset_query(); //to reset all trouble done to the original query
//
function process_cat_tree( $cat) {
$args = array('category__in' => array( $cat ), 'numberposts' => -1);
$cat_posts = get_posts( $args );
$id = $post->ID;
global $post;
if( $cat_posts ) :
foreach( $cat_posts as $menuPost ) :
echo '<li';
if ( $menuPost->ID == $post->ID ) { echo ' class="active"'; }
echo '>';
echo '<a href="' . get_permalink( $menuPost->ID ) . '">' . $menuPost->post_title . '</a>';
echo '</li>';
endforeach;
endif;
echo '</ul></li>';
}
?>
以上代码输出UL / LI标签,如下所示:
答案 0 :(得分:0)
不可否认,我并不完全理解“链接到#post- [ID]”的含义,但是问题标题是:
如果您在回显链接时使用get_permalink()
,您将获得固定链接 - 这正是该功能所做的。
如果您想要返回后ID,请使用get_the_ID()
;如果要显示,则使用the_ID()
(the_ID()
与echo get_the_ID()
相同)。
从这里编辑:
如果您对上述代码感到满意,请更改
echo '<a href="' . get_permalink( $menuPost->ID ) . '">' . $menuPost->post_title . '</a>';
到
echo '<a href="#post-' . $menuPost->ID . '">' . $menuPost->post_title . '</a>';
应该这样做。
但是,我会这样做:
echo '<ul>';
$cat_args = array(
'orderby' => 'name',
'order' => 'ASC'
);
$categories = get_categories($cat_args);
foreach($categories as $category) {
echo '<li class="title"><h2><a href="#">' . $category->name . '</a></h2><ul>';
// query posts of that category:
$query_args = array(
'cat' => $category->cat_ID,
'posts_per_page' => -1
);
$your_query = new WP_Query( $query_args );
// loop through them:
while ( $your_query->have_posts() ) : $your_query->the_post();
echo '<li><a href="#post-';
the_ID();
echo '">';
the_title();
echo '</a></li>';
endwhile;
echo '</ul></li>';
// Reset Post Data
wp_reset_postdata();
}
echo '</ul>';