- 2013-8-4
- WordPress
WordPressプラグインの干渉問題
今日、Child Pages Shortcode と Table of Contents Plusを設置したのですが、なぜかChild Pages Shortcodeを表示しているページだけTable of Contents Plusの目次が表示されない問題が発生して一日中悩みました。
(追記)もっと良い方法がありました。こちらの方法なら引き続き抜粋表示することができます。
ねこもりやさんのブログ”極楽ひだまり保育園”:プラグインとの衝突(干渉)回避。過去記事をアイキャッチ付きで表示するショートコードの場合
Child Pages Shortcodeについて
Child Pages Shortcodeはある固定ページ(page)で子ページを一覧で表示したいときに便利なプラグインです。↓の1行だけでサムネイル込の子ページ表示できるプラグインです。
開発者様:Takayuki Miyauchiさん
詳細 :Child Pages Shortcode
プラグイン:http://wordpress.org/plugins/child-pages-shortcode/
(もしくはプラグインを”Child Pages Shortcode”で検索)
Table of Contents Plusについて
Table of Contents Plusは投稿・固定ページで見出し(hタグ)を並べたときに目次を生成してくれる便利なプラグインです。長文を書くときには目次を付けておくと読者に読まれやすくなると思います。
開発者様:conjur3rさん
詳細 :Table of Contents Plus(英語)
プラグイン:http://wordpress.org/plugins/table-of-contents-plus/
(もしくはプラグインを”Table of Contents Plus”で検索)
本題:共存できない理由
Table of Contents Plusの目次が表示されない問題についてですが。
私はPHPに関して素人なので原因を見つけるのに苦労しました。最初はjQueryが干渉しているのかなと思い、両者のプラグイン編集でjsコードを見ましたが特に問題はありませんでした。
じゃあ、問題はPHPだろうと思いましたが、検討が付かないので手さぐりで一部分をコメントアウトしながら探っていくと、Child Pages Shortcodeでget_the_excerpt()を実行している部分が原因だと分かりました。(特にカスタマイズしていなければ131行目)
ですが、get_the_excerpt()はバグではなく、正常に記事情報を抜粋しています。ただ、なぜかTable of Contents Plusと干渉するのです。これ以上の詳しい原因は分かりませんので、もっと詳しく知りたい場合はPHPやWordPressに精通している方に聞いてください。
じゃあ、対策どうする?
このサイトではAll In One SEO Packというプラグインを入れていて、各記事を書くときにDescriptionを書いています。つまり、記事情報を抜粋する以外にも記事情報を取得する方法がありました。これを取得したときにTable of Contents Plusと干渉しなければ問題解決するわけです。
・・・うまくいきました!
//変更前 $tpl = str_replace('%post_excerpt%', get_the_excerpt(), $tpl); //変更後 $tpl = str_replace('%post_excerpt%', get_post_meta(get_the_ID(), _aioseop_description, true), $tpl);
良い方法が思いつかなければ上記の方法にしてみてはいかがでしょうか。
Sponsored link
便利な商品紹介
オムロン クッションマッサージャ(マッサージクッション) HM-341-BG ベージュ意外と気持ち良い
富士通 FUJITSU ScanSnap iX500 (A4/両面/Wi-Fi対応) FI-IX500A自炊するならやっぱり持っておきたい。せっかくスキャンするならOCR付きにしておくに越したことはない。