Luxeritasのaddheadでカスタムフィールドにscriptが追加できない…

2017年3月12日

なぜー/(^o^)\

Luxeritasのreadmeに以下のような記載がありました。

お、この機能を使えばMathjaxを個別ページに設定できるんじゃない?と思いチャレンジしてみることに。これができればWP Quicklatexというプラグインを減らすことができます!

やりたいこと

とある特定ページの<head>~</head>の中に

<script type="text/javascript" async
  src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML">
</script>

を追加したい。作業としてはコレだけ。

Mathjaxの利用マニュアルは以下ですが、これだけでTeX記法がブログで使用できるようになります。

To jump start, you accomplish the first step by putting

<script type="text/javascript" async
  src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML">
</script>

into the <head> block of your document. (It can also go in the <body> if necessary, but the head is to be preferred.) This will load the latest version of MathJax from the distributed server, and configure it to recognize mathematics in both TeX, MathML, and AsciiMath notation, and ask it to generate its output using HTML with CSS to display the mathematics.

http://docs.mathjax.org/en/latest/start.html

やってみた

カスタムフィールドの[名前]欄にaddheadを入力して…

[値]欄に入れたいスクリプトを書きます。

そして「カスタムフィールドを追加」を押すと…

 

あれ、追加されない…(;´∀`)

押せども押せどもカスタムフィールドが追加されない…(;´∀`)

なぜや~(;´∀`)

 

試しに値をtestにしてみると…

お、追加された!!

どうやらscriptタグが入れられないっぽい…。

Simplicityの寝ログさんも方法書いてるけれど…

上記も参考にやってみたけれど… できねぇです(;´∀`)笑

しかし、寝ログさんの画面キャプチャを見ると<script>~</script>のタグが見える… 仕様上はカスタムフィールドに<script>タグを入れられそうだ。

なぜ入らないのだろう・・。

Luxeritasのaddheadのコードをみてみる

header.phpを覗いてみるとこんなコードが書かれていました。

// カスタムヘッダー
if( is_singular() === true ) {
$addhead = get_post_meta( $post->ID, 'addhead', true );
if( !empty( $addhead ) ) echo $addhead, "\n";
}

ここでaddheadなるものを定義してるみたいですね。Wordpressの知識0、PHPの知識0の私は一行一行ググらなければなりません。

 

まず一行目

if( is_singular() === true ) {

うん…is_singular()ってなんですか(´ε`;)

関数リファレンス/is singular – WordPress Codex 日本語版

is_singular()という関数は、個別投稿を表示している場合は true、それ以外は falseを返すらしい。

というわけで、一覧ページじゃない個別投稿のページにだけ走らせる処理を2行目以下に記載しているみたいですね。

 

2行目

$addhead = get_post_meta($post->ID, ‘addhead’, true)

まずget_post_metaがわからずググる。

関数リファレンス/get post meta – WordPress Codex 日本語版

どうやら、「$post->IDという投稿記事の、’addhead’というカスタムフィールドのキーに対応する”値”を、文字列(true)で返せ」という関数らしい。

ということは、カスタムフィールドで入れた”値”が文字列として、$addheadに格納されているわけですね。

あと、$postというのは投稿記事の情報が入っているwordpressのグローバル変数らしいです(» wordpressで重要なグローバル変数$postの中身の説明)

 

3行目(最後)

if( !empty( $addhead ) ) echo $addhead, "\n";

これはPHPわからない私でも特に問題なくわかりますね。

$addheadに値が入っていたらそれをを書き出してっていってるわけですね。

うん…わかりまてん

addheadで何やってるのかは大体わかりましたが、たぶん問題はここじゃないですね…。

これやる為にはWordpressちゃんと勉強しないとダメそうかなぁ。

あと、何故か以下のページが何カオスなことになってる。。Luxeritasが何かしてる…?

TeX記法verとMathjaxで処理されたverが2回も表示されてる。

何かがエスケープされずにこうなっちゃったのかなぁ?

この記事、あまりに殴り書きすぎるので何度か消そうと思ったものの、なぜか定期的にアクセスがくる上に、「いいね」的なものをもらったりもするのでとりあえずそのままにしているのですが、更に読みにくい記事と化してる…笑

とりあえず私の知識では今のところ対処できないので、WP Quicklatexのプラグインは入れたままでしばらくいこうと思いまする。

追記:Plugin Load Filterというプラグインを使えば、記事毎にプラグインの有効/無効を設定できるらしいので、ひとまずそれで対処してみました


PAGE TOP