Help us understand the problem. What is going on with this article?

WordPressで自作テーブルを作成してデータを利用する方法

WordPressに自作テーブルにデータをぶち込んで利用したいと思ったので、検索してみたらやり方が載っていたので、実際にやってみました。

http://blog.yukarien.com/tech/wordpress-db-access/

手順の概要

1.テーブル作成

2.wp-db.phpを編集

3.追加テーブルのデータ取得

まえがき

作るテーブルとデータはこんな感じです
image.png

テーブル作成

DB:_wp104

操作

テーブル名は他のテーブルを真似て頭にwpbkを付けます。

image.png

挿入

image.png

image.png

表示

image.png

wp-db.phpを編集

wp-db.phpはwp-includesフォルダ内にあります

image.png

Wordpressがバージョンアップされると、wp-db.phpは書き換わるので要注意!!!

image.png

テーブル名が定義してある箇所がありますので、そこに追加するテーブル名[products]を記載します

var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta',
        'terms', 'term_taxonomy', 'term_relationships', 'termmeta', 'commentmeta','products' );

db.php を使って対応する方法

db.phpを作るとwp-db.phpが書き換わってもちゃんと接続できるようになっています。

wp-content>db.php

image.png

[参考]https://yululy.com/wpdb_database_include/

追加テーブルのデータ取得

データベースに追加したproductsテーブルを参照するためには、ショートコードを利用します。
ショートコードは、fucntions.phpの最後に以下のように記載します

注意点

echoを使って出力するのですが、そのまま利用すると思った位置に表示してくれません。それを回避するために、ob_start();とreturn ob_get_clean();の間にechoを持ってきて出力位置を安定させます。

参考記事

ob_start();
    foreach($get_data as $data) {
        echo '<p>[' .$data->name . ']</p>';
    }
return ob_get_clean();

実際のコード

functions.php
function shortcode_test(){
global $wpdb;   
$get_data = $wpdb->get_results("SELECT * FROM $wpdb->products ");
ob_start();
    foreach($get_data as $data) {
        echo '<p>[' .$data->name . ']</p>';
    }
return ob_get_clean();
}
add_shortcode('sc_test', 'shortcode_test');

投稿記事の好きな場所から呼び出します

[sc_test]

https://yuuchika.com/shortcode_method/

CSVファイルをインポートする

csvはutf8(CR+LF)で保存

image.png

照合順序を「utf8_general_ci」に変更する

image.png

healing_code
Qiitaは最強のメモ!!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away