WordPressでデータベースを検索して取得・表示

このエントリーをはてなブックマークに追加

WordPressの関数を用いて、データベース内の値を検索し、必要な行を取得し、表示させます。

以下の例では、検索の初期値

id != 'a'

に続く検索内容を $select_and へ追加していっています。

完全一致、LIKE検索、複数選択、年月日(日時)で検索、カウント

テーブル名「wpsample1users(サンプル)」や各項目を変更してご利用ください。


<?php

	$select_and ="";

	// 完全一致
	$serch_item ="taro";
	if($serch_item !=""){ 
		$select_and .= "AND name ='$serch_item'";
	}

	
	// LIKE検索(○○が含まれている)
	$serch_word ="検索キーワード";
	if($serch_word !=""){ 
		$select_and .= " AND ( ";
		$select_and .= "ID like '%".$serch_word."%'";
		$select_and .= "OR display_name like '%".$serch_word."%'";
		$select_and .= "OR user_email like '%".$serch_word."%'";
		$select_and .= "OR phone like '%".$serch_word."%'";
 		$select_and .= "OR area like '%".$serch_word."%'";
		$select_and .= " ) ";
	}


	// 複数選択(いずれかが含まれている)※配列
	$serch_area = array("tokyo", "osaka", "kyoto", "okinawa");
	if (!empty($serch_area)) {
		$i=1;
		$select_and .= " AND (";	
		foreach ($serch_area as &$value) {
			if($i!=1){
				$select_and .= " OR ";	
			}
			$select_and .= "area like '%".$value."%'";
			$i++;
		}	
		$select_and .= ")";	
	}


	// 年月日で検索
	$regist_from = "2020-01-01";
		$regist_to = "2020-01-31";   
		if($regist_from!="" || $regist_to!=""){ 
			if($regist_from!="" && $regist_to!=""){ 
				$select_and .= "AND user_registered BETWEEN '$regist_from 00:00:00' AND '$regist_to 23:59:59'";
			}
		if($regist_from!=""){ 
    			$select_and .= "AND user_registered >= '$regist_from 00:00:00'";
		}
		if($regist_to!=""){ 
			$select_and .= "AND user_registered <= '$regist_to 23:59:59'";
		}
	}


	// 結果の総数を取得
	global $wpdb;
	$count_list = $wpdb->get_results( 
		"
		SELECT * 
		FROM wp7af999users 
		WHERE id != 'a' 
		".$select_and
	);
	$count = $wpdb->num_rows;
    

	$offset=0; // 取得開始位置
	$order_select="30"; //取得件数
	$orderby = "ORDER BY id DESC "; //並び順(ソート)
	
	// 結果を取得
	global $wpdb;
	$record_list = $wpdb->get_results( 
		"
		SELECT * 
		FROM wpsample1users
		WHERE id != 'a' 
		".$select_and.$orderby." 
		limit ".$offset." , 
		".$order_select
	);

?>

取得した値を表示


<div>
	検索結果 <?php echo $count;?> 件
</div>

<?php foreach ( $record_list as $record_lists ) { ?>
	<div>
		<?php echo $record_lists->ID;?>:<?php echo $record_lists->display_name;?>
	</div>
<?php } ?>

実際にはGETやPOSTを用いて、検索したい値を取得していくことになると思います。データベースの操作についてはこちらもご覧ください。
WordPressでデータベースを操作する関数(行の挿入、更新、削除)