PHPのコードをパーツ化する方法(2)クラスを使う方法

前回※1、get_template_part()に引数を渡す方法を紹介しましたが、この方法では、
(1)呼び出す側にset_query_varと呼び出される側にget_query_varをその都度書かなければならないこと。
(2)PHPファイル別々に作成するので、見通しが悪くなること。
ことが、課題です。
そこで、今回は、これに代わる方法として、classを呼び出す方法を紹介します。


参考文献

参考記事

※1PHPのコードをパーツ化する方法(1)get_template_part()で引数を渡す方法

この記事を参照している記事

WP_Queryのカスタマイズ

コード例

事例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

PHPのコードをパーツ化する方法(1)get_template_part()で引数を渡す方法

WordPressのカスタマイズの規模が大きくなると、8割~9割は同じようなPHPのコードを何度も書いていることがあります。このようなときは、別ファイルを作成してソースコードを分割し、コードを再利用することにします。
分割した別ファイルは、get_template_part()によって呼び出しますが、このとき、再利用の度合いを高めるために引数を渡したい場合があります。

WordPressCodexには、テンプレートに変数を渡す方法が解説されています。
今回は、一例として、引数taxと引数termを渡して、テンプレート側サブクエリーを実行する例を紹介します。

参考文献

参考記事

この記事を参照している記事

PHPのコードをパーツ化する方法(2)クラスを使う方法

コード例

事例1:get_template_part()でサブクエリーを呼び出す方法

呼び出す側

$args = array(
	'tax' => 'region',
	'term' => '9789',			
);
set_query_var( 'val', $args) ; 
get_template_part( 'template-parts/sample/content', 'sample' );	

呼び出される側

<?php
//引数を受け取り
		$var = get_query_var('val');
		$par =(object)$var;
//サブクエリー
		$args = array(		
			'post_type' => 'post',
			'tax_query' => array(
				array(
					'taxonomy' => $par->tax,				
					'field' => 'term_id',
					'terms' => $par->term,
				)
			)
		);
		$the_query = new WP_Query($args) ;
//サブループ
		if($the_query->have_posts()){
			While($the_query->have_posts()){
				$the_query->the_post();
					//表示
					the_title() ;
					echo "<br>\n" ;
			}
		}//endif	
築地(和風スナック)沢の鶴の看板。月島三丁目。
築地(西仲通り商店街)明治時代の埋め立て工事により出来上がった町。

当面の間、散歩ブログの更新を休止致します。

◆新型コロナウイルスの感染拡大に伴い、当面の間、散歩ブログの更新を休止致します。

◆ブログトップのURLを下記の通り変更しました。
ご迷惑をおかけしますが、よろしくお願い致します。
(変更前)http://kokontouzai.jp/sanpo
(変更後)http://kokontouzai.jp/blog/sanpo

◆新たに、ITに関するブログの掲載を始めました。
(URL)http://kokontouzai.jp/blog/it

参考文献

参考記事

茂原(創業50年の洋食屋)店内は、バーのような雰囲気。

茂原駅前に建つ駅前ビル。1階は、飲食店街になっています。

昔ながらの洋食屋。

店内は、バーのような雰囲気。

ナポリタンとビールを注文。

参考文献

参考記事

茂原(桜湯)傍らに桜の木のある銭湯。房総横断道路近く。

房総横断道路から北へ入った通り。

銭湯の桜湯があります。

ペンキで書かれた「桜湯」の文字

傍らには、桜の木。屋号の由来の木でしょうか。

参考文献

参考記事

茂原(リップスティック)軽食店併設の風俗(サロン)店。

房総横断道路沿い。

交差点脇に1軒屋の建物。

サロン(風俗店)と軽食が併設された店舗です。

現在は休業している模様です。

参考文献

参考記事

茂原(榎町商店街)カラフルな看板建築建物群。

今回は、茂原(千葉県茂原市)の町並みを散歩します。
茂原の榎町商店街と駅前通り商店街は1970年代か ら1980年代に最盛期を迎えました。*1

現在も当時からの商店が建ち並んでいます。

商店街は500mほど続きます。東側の通りにも看板建築が残っています。

住居部分と一体となったお菓子屋さん。

参考文献

*1
新名阿津子茂原市における中心商店街活性化への課題地域研究年報28 2006筑波大学2006 リンク
Ⅱ-2 榎町・駅前通り商店街  榎町商店街はJR茂原駅から約500m圏から1 ㎞圏の範囲に位置し,昌平町…

参考記事

上野(三軒長屋の商店の看板建築)3色3階建て。

佐竹商店街の東側(小島一丁目)の清洲橋通り。

三軒長屋の商店。色は3色です。

2階部分。

後方に、3階建て部分が見えます。

参考文献

参考記事

上野(佐竹商店街の看板建築)鮮やかな銅板。

佐竹商店街から西へ入った路地。

看板建築の建物が残っています。

銅板建築。

隣のトタン建築の物干し台。

参考文献

参考記事

上野(吉田屋モスリン店)佐竹商店街。入口に竹久夢二の作品。

佐竹商店街(台東3丁目)は、江戸時代に佐竹藩の屋敷があたことから名づけられた商店街で、南北300mに及ぶ長大な商店街です。

商店街にある「吉田屋」。

「モスリン店」※1 の看板が掲げられています。」

竹久夢二の作品。