WordPressのカテゴリーページの説明欄に下記の目次を挿入しました
(使用したプラグインTable of Contents Plusでの自動生成)
html
1序文みたいなもの 2<div id="toc_container" class="toc_white no_bullets"> 3 <p class="toc_title">目次</p> 4 <ul class="toc_list"> 5 <li><a href="#i">あ</a></li> 6 <li><a href="#i-2">い</a></li> 7 <li><a href="#i-3">う</a></li> 8 <li><a href="#i-4">え</a></li> 9 </ul> 10</div> 11<h2>あ</h2> 12<h2>い</h2> 13<h2>う</h2> 14<h2>え</h2> 15
目次をサイドバーでも表示したく、本文(category_description())の目次部分のHTMLを切り取ろうと思っています。
functions.phpに下記のコードをいれて[toc_cat]のショートコードをサイドバーのウィジェットに記述しました。
php
1add_shortcode('toc_cat', 'tocCat'); 2 3function tocCat() { 4 if ( is_category() ) { 5 $target_text =category_description(); 6 $delimiter_start = "<div id=\"toc_container\" class=\"toc_white no_bullets\">"; 7 $delimiter_end = "</div>"; 8 $start_position = strpos($target_text, $delimiter_start) + strlen($delimiter_start); 9 $length = strpos($target_text, $delimiter_end) - $start_position; 10 $output = substr($target_text, $start_position, $length ); 11 return $output; 12 } 13}
結果としては目次以外のHTML部分は抽出できて表示できるものの、
目次部分(Table of Contents Plus)生成が遅いのか抽出できません。
本文(目次)が生成してから抽出する方法はありますでしょうか?
ちなみに下記も試してみましたが、空の状態での読み込みになってしまいます。
php
1add_shortcode('toc_cat', 'tocCat'); 2 3function tocCat() { 4 function add_footer() { 5 if ( is_category() ) { 6 $target_text =category_description(); 7 $delimiter_start = "<div id=\"toc_container\" class=\"toc_white no_bullets\">"; 8 $delimiter_end = "</div>"; 9 $start_position = strpos($target_text, $delimiter_start) + strlen($delimiter_start); 10 $length = strpos($target_text, $delimiter_end) - $start_position; 11 $output = substr($target_text, $start_position, $length ); 12 return $output; 13 } 14 } 15add_action('wp_footer', 'add_footer', 10, 1); 16}