プラグイン

投稿日:2025年5月22日 更新日:

Table of Contents Plusの見出し、記事内の内部リンクを拾ってしまい困った時の対応策

WordPressでブログを書く時に、
目次をつけたいと「Table of Contents Plus」を使うことはないですか?

「Table of Contents Plus」は見出しタグを設定すると自動で目次を作成してくれるとても便利なプラグインですが、先日このプラグインを使用していて困ったことがありました。

内部リンクの見出しも目次として表示してしまう

記事に関連する記事を紹介したくて内部リンクを設置することがあります。
この内部リンクの設置に、作業が簡単な「Shortcodes Ultimate」というプラグインを使用していました。

内部リンクを設置すると、その記事のタイトルも目次として表示されます。
これは困る。。。
何とか解消法はないかと設定箇所を見たりしましたが、内部リンクの記事タイトルが「見出し」になることは不可避のようです。

プラグインの設定を見てみる

Table of Contents Plusの設定

楽したくてプラグインを導入してるので、まずはプラグインの設定で何とかならないか調べます。

「Table of Contents Plus」の上級者向け設定に「除外する見出し」というのがあったので、ここに内部リンクの記事タイトルに付与されているクラス名を入れてみるが、ここは「タイトルの中にあるテキスト」を判定するようで解決にはならなかった

Shortcodes Ultimateの設定

ショートコードプラグインの設定で
投稿のタイトルを見出し以外に設定できないか調べてみる。

それらしい設定が見当たらない・・・

functions.phpにタグを書いてショートコードを使えるようにした

結局、プラグインの仕様を変更するよりも自作でショートコード使えるようにした方が早かったので、ChatGPTにタグを書いてもらう。
参考までにタグをのせておきます。
functions.phpを変更する際はバックアップを取っておいてください。

function my_custom_blogcard_shortcode($atts)
{
  $atts = shortcode_atts(array(
    'id' => '',
  ), $atts, 'my_blogcard');

  $post_id = intval($atts['id']);
  if (!$post_id) return '';

  $permalink = get_permalink($post_id);
  $title = get_the_title($post_id);
  $thumbnail = get_the_post_thumbnail_url($post_id, 'medium');
  $excerpt_raw = get_the_excerpt($post_id);
  $excerpt = wp_trim_words($excerpt_raw, 40, '<span class="more">…もっと読む</span>'); // ← 40語まで、必要に応じて数字を調整


  // カードHTML
  ob_start(); ?>
  <a href="<?php echo esc_url($permalink); ?>" class="my-blogcard">
    <div class="blogcard-container">
      <?php if ($thumbnail): ?>
        <div class="blogcard-thumb">
          <img src="<?php echo esc_url($thumbnail); ?>" alt="">
        </div>
      <?php endif; ?>
      <div class="blogcard-text">
        <p class="blogcard-title"><?php echo esc_html($title); ?></p>
        <p class="blogcard-excerpt"><?php echo $excerpt; ?></p>
      </div>
    </div>
  </a>
<?php
  return ob_get_clean();
}
add_shortcode('my_blogcard', 'my_custom_blogcard_shortcode');

ショートコードの使い方

記事内に内部リンクを設置したいときは、
[my_blogcard id="123"] と書くだけです。

id="123"の123は記事IDなのでこれを変更すればOK!

このショートコードもパターン登録して使おうと思ってたけど、パターンを選択するほうが手間が増えるので結局書くのが一番早いという結論に達しました。

まずはブロック選択から「すべて表示」選択、
次にブロックからパターンタブ選択、
その後に任意のパターンを選ぶ作業があり、何度もクリックしないといけない。

クリックするのが苦でない人はおすすめです。

- プラグイン

関連記事

項目選択肢の値をフォームに渡す/contactform7

目次1 項目選択肢の値をフォームに渡す/コンタクトフォーム71.1 やりたいこと1.2 ページの表記1.3 functions.php1.4 コンタクトフォーム1.5 メモ 項目選択肢の値をフォームに ...

【プラグイン】contactform7のカスタマイズ

contact form7には特別なメールタグがあり、使用できる 特別なメールタグ Contact form 7 のフォームに自動的に記事タイトルを入れる方法 http://www.doya-doya ...

Contactform7の添付ファイルに関する覚書き

目次1 Contactform7 で.heic形式の画像を使用できるようにする1.1 functions.phpに追記1.2 Contactform7 でファイル設定2 その他添付ファイルに関するメモ ...

Yet Another Related Posts Plugin (YARPP)カスタムテンプレートの使い方

別ブログで関連記事を表示するために「Yet Another Related Posts Plugin (YARPP)」というプラグインを使っています。 表示内容をちょっと変えたい時に、カスタムテンプレ ...

wordpressプラグイン contactfotm7 不要なタグを除去する

目次1 functions.phpに以下を記載2 wordpress の contactform7テキストエリア内に改行を入れる2.1 対策 functions.phpに以下を記載 // Contac ...