Web production note

 【更新日 :

【WordPress】親記事も全て表示させるパンくずリスト

Category:
WordPress

WordPressで2階層以上の親記事も全て取得し、表示させるパンくずリストのサンプルです。

<ul class="topic-pass">
    <li><a href="<?php echo esc_url( get_home_url() ); ?>/">TOP</a></li>
    <?php
        //記事の親ページIDを取得
        $this_post_parent_id = $post->post_parent;
    ?>
    <?php if($this_post_parent_id): ?>
        <?php
            //2階層以上の公開されている親ページを全て取得
            $parent_topic_pass_list = array();
            $roop_post_parent_id = $this_post_parent_id;
            do {
                $parent_post = get_post($roop_post_parent_id);
                $parent_post_parent_id = $parent_post->post_parent;
                if($parent_post_parent_id) {
                    if(get_post_status($parent_post_parent_id) === 'publish') {
                        $roop_post_parent_id = $parent_post_parent_id;
                        $parent_topic_pass_list[] = '<li><a href="'.get_permalink($parent_post_parent_id).'">'.get_the_title($parent_post_parent_id).'</a></li>';
                    } else {
                        $roop_post_parent_id = false;
                    }
                } else {
                    $roop_post_parent_id = false;
                }
            } while ($roop_post_parent_id);

            //取得した2階層以上の親ページを出力
            if(!empty($parent_topic_pass_list)) {
                $parent_topic_pass_list = array_reverse($parent_topic_pass_list);
                foreach($parent_topic_pass_list as $value){
                    echo $value;
                }
            }
        ?>
        <?php if(get_post_status($this_post_parent_id) === 'publish'): //公開されている記事のみ表示 ?>
            <li><a href="<?php echo get_permalink($this_post_parent_id); ?>"><?php echo get_the_title($this_post_parent_id); ?></a></li>
        <?php endif; ?>
    <?php endif; ?>
    <li><?php the_title(); ?></li>
</ul>