ひさびさに仕事用に備忘録
いちいち、クライアントごとのソースコードからコードを引っ張ってくるのが面倒くさいので備忘録を書いとくことにします。
「指定したカテゴリIDの祖先IDを辿る」
WordPressのget_post_ancestorsがイマイチ使いづらく、その上、カテゴリIDを引数指定で単独で呼び出したかったので個人的に作成しました。
タームのループを繰り返すことで最上位のカテゴリを辿る。
すでに引数で指定したカテゴリIDが最上位の場合は自分のIDを返す。
//functions.php側
function getCatAncester($argCat = NULL){
if($argCat != NULL){
$cat = get_terms(‘category’,’get=all&include=’.$argCat);
$catIdAnc = $argCat;
$catIdTmp = $argCat;
$catIdDsc = $argCat;
while($catIdTmp != 0){
$cat = $cat = get_terms(‘category’,’get=all&include=’.$catIdTmp);
$catIdAnc = $catIdTmp;
$catIdTmp = $cat[0] -> parent;
if($catIdTmp != 0){
$catIdAnc = $catIdTmp;
}
}
return $catIdAnc;
}else{
return false;
}
}
//テンプレ側 getCatAncester(祖先IDを取得したいカテゴリのID);
「query_post()においてcatなどを指定したときでも記事の先頭固定表示を有効化させる」
どっかのフォーラムでの拾い物。
どうやら、$wp_queryのオブジェクト内容に開いているページがホームかどうか示すもんがあるらしい。それがis_homeのパラメータ。
query_postのカテゴリ指定がある場合はそれが強制的にfalseとなるのとのこと。
その状態では先頭固定表示の機能は使えない。
なので$wp_queryをのホームであるかどうかの値を書き換えて、強制的に機能を有効化するコードみたいです。
query_post()に挟んで使い、前で強制的に機能を有効化するように書き換え、後に設定を元に戻すようにする、ってコードですね。
//functions.php側
function enable_sticky_posts($wp_query){
$wp_query->is_home = true;
}
//テンプレ側 add_action(‘pre_get_posts’,’enable_sticky_posts’); query_posts($query_string.’&cat=1&ignore_sticky_posts=0′); remove_action(‘pre_get_posts’,’enable_sticky_posts’);
以上でした。
