自作ショートコードが表示できない
-
任意のid要素部分から次のh2タグ直前までを取得し、そのなかからh3のみを抽出し、リンクリストを作るためのショートコードを作りたいのですが、うまく動かず質問いたします。
※$content_before_h2
には正しく値が格納されているように見えます。$matches
の値が空になっており、これが問題ではと思っています。
PHP初心者で解決方法が見出せず、ご教示いただければ幸いです。
よろしくお願いします。
***
↓ショートコード
[extract_h3_to_link_list id=”test-h2″]
※idを指定した要素はショートコード前後に記述↓function PHP への記述
function extract_h3_to_link_list($atts) { // ショートコードで指定されたID $id = isset($atts['id']) ? $atts['id'] : ''; // 現在の記事の本文を取得 global $post; $post_content = $post->post_content; // 指定したIDが設定された要素の位置を取得 $element_position = strpos($post_content, 'id="' . $id . '"'); if ($element_position !== false) { // 指定したIDの要素から次に出現する <h2> タグの位置を取得 $next_h2_position = strpos($post_content, '<h2', $element_position); if ($next_h2_position !== false) { // <h2> タグ直前までのコンテンツを抽出 $content_before_h2 = substr($post_content, $element_position, $next_h2_position - $element_position); // 正規表現を使用して <h3>...</h3> の内容を抽出 preg_match_all('/<h3>([^<]+)<\/h3>/', $content_before_h2, $matches); // リンクリストのHTMLを構築 $link_list = '<ul>'; foreach ($matches[1] as $item) { $link_list .= '<li><a href="#">' . $item . '</a></li>'; } $link_list .= '</ul>'; return $link_list; } } }add_shortcode('extract_h3_to_link_list', 'extract_h3_to_link_list');
2件の返信を表示中 - 1 - 2件目 (全2件中)
2件の返信を表示中 - 1 - 2件目 (全2件中)
- トピック「自作ショートコードが表示できない」には新たに返信することはできません。