ページ内アンカーリンク+記事一覧スタイルの場合
<?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に指定すれば、アンカーリンク可能に。
コメント