web-dev-qa-db-ja.com

functions.phpでget_term_byが機能しない

Get_term_by()で奇妙な問題があります。テンプレートの中で使うときはうまくいきますが、functions.phpの中で使うときはfalseを返すだけです。

$term = get_term_by('slug', 'some-term', 'some-taxonomy');
var_dump($term);

なぜこれが起こっているのかについての説明は大歓迎です。

2
Andrei

これはおそらく、クエリしようとしている分類法がまだ登録されているために起こります。例えば。 WordPress環境はテーマのfunctions.phpファイルがロードされるときにロードされますが、多くのプラグイン/テーマ/コア関数は後で分類法を登録しません。

本当に高い優先順位番号でinitにフックしてget_term_by関数を実行してみてください。そのようです:

<?php
add_action( 'init', 'wpse27111_tester', 999 );
function wpse27111_tester()
{
    $term = get_term_by('slug', 'some-term', 'some-taxonomy');
    var_dump($term);
}
3
chrisguitarguy