ショートコード内で使用できないtaxonomy名

ショートコード内で、変数として使用する際に、使用できないタクソノミーがあることがわかった。

タクソノミーに-(マイナス)が含まれていると、ちゃんと単語として認識してくれない事態に遭遇。

【例1】

extract(shortcode_attsのarray内

左辺の関数名に-(マイナス)が含まれていると、get_postsで関数が認識されない。

【例2】

wp_get_categories

“”でくくる関数名に-(マイナス)が含まれていると、get_postsで関数が認識されない。


【対処方法】

-(マイナス)を含まないようにする。

エスケープシークエンスのようなもので、クリアできるのかも知れないが、対処方法は分からなかった。→既存のタクソノミー名(すでに、-(マイナス)が含まれているもの)では、対処できず。→タクソノミー名を変更するしかない。


【結論】
タクソノミー名やカスタムポスト名には、-(マイナス)を含まないようにする。
必要な場合は、_(アンダーバー)を用いる。


wordpress codex日本語版にそれに関係しそうな情報が書いてあった。

上記のページから引用。

ハイフン
参考: 以下で説明するハイフン (‘-‘) を使ったショートコードに関する動作は WordPress 3 以上にも当てはまります。これは do_shortcode() や get_shortcode_regex() のバグによるものかもしれません。

ショートコードの名前にハイフンを使うときは注意してください。次の例では WordPress が2番目のショートコードを1番目と同じだと見る場合があります(WordPress は基本的にハイフンより前の部分を見ます):
[php]
[tag]
[tag-a]
[/php]
結果はどのショートコードが最初に定義されたかに完全に依存します。もしハイフンを使うつもりなら一番短いショートコードを最初に定義してください。

これを避けるには下線を使うか、区切り文字なしにしてください:
[php]
[tag]
[tag_a]

[tag]
[taga]
[/php]
ショートコードの最初の部分がどれも異なっていれば、ハイフンを使っても問題ありません:
[php]
[tag]
[tagfoo-a]
[/php]
重要: ハイフンを使うと知らないうちに影響を与える可能性があります。もしインストールされた他のショートコードもハイフンを使っていると、ハイフンをつけた一般的な単語が衝突するかもしれません(同じリクエスト内で両方のショートコードが使われた場合):

[php]
// plugin-A
[is-logged-in]

// plugin-B
[is-admin]
[/php]

記事の共有: