前回※1、get_template_part()に引数を渡す方法を紹介しましたが、この方法では、
(1)呼び出す側にset_query_varと呼び出される側にget_query_varをその都度書かなければならないこと。
(2)PHPファイル別々に作成するので、見通しが悪くなること。
ことが、課題です。
そこで、今回は、これに代わる方法として、classを呼び出す方法を紹介します。
PHPのコードをパーツ化する方法(2)クラスを使う方法
参考文献
参考記事
※1PHPのコードをパーツ化する方法(1)get_template_part()で引数を渡す方法この記事を参照している記事
コード例
事例1:WP_Queryの拡張②アレンジした方法
呼び出す側
$args = array(
'post_type' => 'glossary',
'key' => array('gloss_type','region'),
'value' => array('9851','9790')
);
$query = new Model36618($args);
Modelクラス
class Model36618 extends WP_Query
{
public function __construct($var)
{
//配列をオブジエクトに変換。
$par =(object)$var;
//クエリー
$args = array(
'post_type' => $par->post_type,
'meta_query' => array(
'relation' => 'AND',
array(
'key' => $par->key[0],
'value' => $par->value[0],
),
array(
'key' => $par->key[1],
'value' => $par->value[1],
)
)
);
$the_query = new WP_Query($args) ;
//ループ
if($the_query->have_posts()){
While($the_query->have_posts()){
$the_query->the_post();
//Viewの記述
$view_obj = new View36618($par2) ;
}
wp_reset_postdata();
}//endif
}
}
Viewクラス
class View36618
{
public function __construct($par2)
{
the_title() ;
echo "<br>\n" ;
}//endfunction
}//endclass