По общему признанию, я не совсем понимаю, что вы подразумеваете под "ссылкой на # post- [ID]", но переходя к заголовку вопроса:
Если вы используете get_permalink()
при отображении ссылки,вы получите постоянную ссылку - это именно то, что делает эта функция.
Используйте взамен get_the_ID()
, если вы хотите вернуть post-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>';