1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WordPress ninjaテーブルを使ってショートコードでデータを呼び出す方法

Last updated at Posted at 2022-03-13

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を指定する!!

image.png

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');
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?