PHP

レンタルサーバwpXのphpMyAdminに接続してPHPで記事情報を取得する

PHP-アイキャッチ

こんにちは!ゆーたろうです。

今回は、WordPress特化型レンタルサーバであるwpXとPHPを使い、自作でWordPressの記事を表示するプログラムを作っていこうと思います。

作ろうとした背景・目的

以前、こんな記事を書きました。

この目的の通り、このサイト内で自社販売を行おうと思っています。

その際、簡易的なユーザ管理システム(個人情報の取り扱いはもちろんなし)を作り、そこでツールの管理をしていきたいという狙いがあります。

そして、上記の記事で、とりあえずFTP設定が完了できたので、今回では、ついに、データベースに繋いでいこうというお話になります。

使う環境

  • 使用言語:PHP
  • SQL:MySQL
  • データベース:phpMyAdmin

を使っていきます。

それでいきましょう!

データベースのログイン情報を調べる

PHPからデータベースにアクセスする際に、データベース側のログイン情報をセットする必要があります。

データベースのログイン情報とは、この画面で入力する項目のことです。

wxp-database-access-phpmyadmin-login-page

そのため、データベース側のログイン情報を調べましょう。

WordPressのログイン情報にまつわるものは、「wp-config.php」というファイルにまとめられています。

こちらです。

wxp-database-access-ftp-all-list-ver2

なお、このFTPファイルサーバー画面の表示方法が分からない場合は、下記の記事を参考に初期設定や接続セットアップを行ってください。

【wpX】FTPアカウントを取得して、サーバにログインしてみる

次に、wp-config.phpをクリックします。

そうすると、自動的にダウンロードされるので、されたらその中身を開きます。

wxp-database-access-wp_confing-code

こんな感じのソースコードが書かれています。

黒く塗りつぶしている箇所が、データベースにアクセスする際に必要な情報となります。

なので、取り扱いには十分注意してくださいね。

不正アクセスやデータ喪失の元となります。

実際にプログラミングしよう!

さて、ここまで出来たらあとはPHPでコーディングするだけです。

階層構成

  • wp-admin
  • wp-content
  • wp-includes
  • .htaccess
  • index.php
  • license.txt
  • readme.html
  • wp-activate.php
  • wp-blog-header.php
  • wp-comments-post.php
  • wp-config-sample.php
  • wp-config.php
  • wp-cron.php
  • class.php・・・追加
  • test.php・・・追加

ルート階層(一番上)にこの2つのファイルを作ります。

サンプルプログラム

サンプルプログラムはこんな感じになります。

class.php

<?php
require("wp-config.php");

class All {
/*--------------------------------------------------------
 定数定義
--------------------------------------------------------*/
//DB関連
	//ログイン情報
	const HOST		= DB_HOST;
	const DBNAME	= DB_NAME;
	const USER		= DB_USER;
	const PASSWORD	= DB_PASSWORD;
	
/*--------------------------------------------------------
 変数定義
--------------------------------------------------------*/
//DB関連
	public $pdo;
	
/*--------------------------------------------------------
 コンストラクタ
--------------------------------------------------------*/
	public function __construct(){
		//DB設定
		$this->connectDB();
	}
	
/*********************************************************
 DB関連
*********************************************************/
	/** DB接続
	* argment none
	* return none(insert to class propaty)
	*/
	function connectDB() {
		$host	 = self::HOST;
		$dbname   = self::DBNAME;
		$user	 = self::USER;
		$password = self::PASSWORD;
		
		try {
		  $this->pdo = new PDO('mysql:host='.$host.';dbname='.$dbname.';charset=utf8',$user,$password,
			array(
				PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
				PDO::ATTR_EMULATE_PREPARES => false,
			));
		} catch (PDOException $e) {
		  die('データベース接続失敗。'.$e->getMessage());
		}
	}
	
}//end class

?>

test.php

<?php
require("class.php");

$main = new All();


$stmt = $main->pdo->prepare("SELECT * FROM wp_posts WHERE id=2");
$stmt->execute();
$data = $stmt->fetch();

echo "post_date:" .  $data['post_date'] . "<BR>";
echo "post_date_gmt:" .  $data['post_date_gmt'] . "<BR>";
echo "post_content:" .  $data['post_content'] . "<BR>";


簡単な解説

※基本的なプログラミング知識はあることを前提としてお話していきますので、ご了承ください。

class.phpの解説です。

wp-confing.phpに書かれている情報を使ってDBアクセスプログラムを書いています。

//ログイン情報
const HOST	= DB_HOST;
const DBNAME	= DB_NAME;
const USER	= DB_USER;
const PASSWORD	= DB_PASSWORD;

ここに書いた「DB_HOST」などはどこから来たかと言えば、この部分です。

wxp-database-access-login-information

ありがたいことに、DEFINEで定義されているので、ぶっちゃけ私の子のソースをそのまま使えば、みなさんの環境でも動くようになっています。便利ですね。

そして、このDEFINEが定義されているwp-config.phpをclass.phpでも使えるようにするうために、冒頭で「require(“wp-config.php”);」を行っています。

test.phpの解説です。

「(“SELECT * FROM wp_posts WHERE id=2”);」

の部分です。

接続先は「wp_posts」テーブルを指定しています。

これはどこを指すかというと、phpMyAdminのテーブルを意味します。

phpMyAdminデータベースにアクセスすると、このようなテーブル構成になっています。

wxp-database-access-db-all_list

このテーブル構成は、WordPressをインストールした場合は必ずこのようになっています。

これらの各テーブルは、WordPressを使っていく上で必要になるものです。

テーブル名を変えたり削除したりなど勝手に操作しないように注意しましょう。

今回は、このテーブルの中の「wp_posts」をSELECTしています。

では、そのwp_postsの構造を見てみましょう。

wxp-database-access-wp_posts

参考にスクショした画面ですので、もちろんこれだけではないです。

とりあえず、この画面に映っている以下の3点を取得してみようと思います。

  • post_date
  • post_date_gmt
  • post_content

それをソースで表現したのが、この部分になります。

echo "post_date:" .  $data['post_date'] . "<BR>";
echo "post_date_gmt:" .  $data['post_date_gmt'] . "<BR>";
echo "post_content:" .  $data['post_content'] . "<BR>";

最後に、この2つのファイルをFTPでファイルサーバー側に送信して、準備完了です!

いざ、実行

さて、アップした「test.php」にアクセスしてみましょう。

私の環境で言えば、

https://experience-memory.com/test.php

となります。

wxp-database-access-get-wp_posts-success

はい!成功です。無事に取得することができました。

お疲れ様でした。

まとめ

いかがだったでしょうか。

wpXもファイルサーバーとデータベースのまとまりなので、アクセス権さえあれば、プログラミングで保存されているデータを自由に取得することができます。

これで、もともとの目的であるユーザ管理をwpX内に実装できそうです。