ページ内アンカーリンク+記事一覧スタイルの場合
<?php $args = array( 'posts_per_page' => -1, 'post_type' => 'recruit_post', //postは通常の投稿機能 'post_status' => 'any', ); ?> <?php $news_posts = get_posts($args); ?> <?php foreach ($news_posts as $post): setup_postdata($post); ?> <?php if(get_post_status($post->ID)=='publish'): ?> <a href="#<?php echo $post->post_name;?>"> <?php the_title(); ?> </a> <?php else:?> <a style="opacity:0.5;"> <?php // 記事タイトルから「非公開: 」を削除する echo $replace = str_replace('非公開: ', '', get_the_title()); ?> </a> <?php endif; ?> <?php endforeach; ?> <?php foreach ($news_posts as $post): setup_postdata($post); ?> <?php if(get_post_status($post->ID)=='publish'): ?> <div class="content" id="<?php echo $post->post_name;?>"> <h3> <?php the_title(); ?> </h3> <?php the_content(); ?> </div> <?php endif; ?> <?php endforeach; ?>
目次
公開ステータス以外のものを出す
'post_status' => 'any',
post_statusをanyにすると、あらゆるステータスの記事が表示されるようになる。
表示される記事が公開ステータスかどうか改めて判別
<?php if(get_post_status($post->ID)=='publish'): ?> <?php endif;?>
公開ステータス以外の記事についてはリンク設定しない、などの分岐をする。
または、ページ内アンカーリンク+記事一覧スタイルの場合、記事一覧の部分については記事内容を出力しないときにも使える。
番外:記事slugを拾ってきて、ページ内アンカーリンク式にする
<?php echo $post->post_name;?>
これを、アンカーリンク側のaタグの#先と、アンカーリンク先の要素のidに指定すれば、アンカーリンク可能に。
コメント