MySQLにオリジナルテーブルを作ってデータを呼び出す方法もありますが、
そこまで複雑なことをしない場合は、データテーブルプラグインを使って
データを呼び出した方方が比較的簡単に実装できると思います。
ここでは、ninjaテーブルを使って呼び出してみたいと思います。
流れと設定方法
//------ninjaテーブルを使った値の呼び出し方-------------
//プレフィックスを設定してください
//記事の中からショートコードで呼び出す
//ショートコード[nintbl table番号 条件項目 条件項目の値 取得フィールド]
//例えば、tabel番号が92でid=1のレコードのprice項目の値を取得する場合 [nintbl 92 id 1 price]
//注1 複数レコードが該当するような条件は利用できない
//注2 部分検索を利用している似たような項目名を付けない(price_max,price_min)
ショートコード
sample.html
[nintbl table番号 条件項目 条件項目の値 取得フィールド]
[nintbl 92 id 1 price]
注意)ninjaテーブルの項目を指定するときはColumn Keyを指定する!!
phpコード
function.php
<?php
function get_nintbl($atts){
global $wpdb;
//プレフィックス(データベースのテーブル名の頭の文字列)を設定する
$prefix="wpyd";
//$prepared_sql = $wpdb->prepare("SELECT *FROM $wpdb->ninja_table_items WHERE table_id = %d",$atts[0]);
$prepare_sql = $wpdb->prepare("SELECT * FROM ".$prefix."_ninja_table_items WHERE table_id = %d",$atts[0]);
$results=$wpdb->get_results($prepare_sql);
//echo count($results);
$replace = [
// '置換前の文字' => '置換後の文字',
'[' => '',
'{' => '',
'}' => '',
']' => '',
'"' => '',
];
//var_dump($results);
foreach($results as $data) {
//[{"id":"1","career":"docomo","ols":"ドコモオンライン","price":"10000"}]
// カンマ区切りのデータを分割
$str_data=str_replace(array_keys($replace), array_values($replace), $data->value);
$arry_data = explode(",", $str_data);
//var_dump($arry_data);
$match = preg_grep('!'.$atts[1].':'.$atts[2].'!',$arry_data);
if(count($match)>0){
$value = preg_grep('!'.$atts[3].'!',$arry_data);
foreach($value as $val){
return str_replace($atts[3].":","",$val);
};
}
}
//return "受け取った数字は".$atts[0]."と".$atts[1]."です";
}
add_shortcode('nintbl','get_nintbl');