WordPressで作ったブログの記事一覧を見たい時ってありません?
しかし、WordPressの管理画面の投稿一覧はわかりにくいんですよね。
投稿一覧ではわかりにくいので、自分で記事一覧をPHPで自作してみました。
自作したものは↓こちらです。
記事の「ID」「タイトル」「公開日時」を一覧にしました。
投稿者「みか」自己紹介
- パソコンとデータベースが大好き
- 自社でネットワーク・システム・機器管理、Webサイト構築
- 自社向けのシステムをMicrosoft AccessやPHPで多数構築
- Excelでの作業はVBAを使って効率化
- ロックバンド「VARS」でベース担当
- 「VARS」のWebサイト、ブログも構築
- 「VARS」のライブを観に来てね!https://vasofatum.jp/live/
自分の管理用フォルダを作る
WordPressには管理用の「wp-admin」というフォルダがあります。
それと同じように自分でPHPを使って作ったスクリプトを置く管理用のフォルダをサーバーに作ります。
ブログのフォルダ直下に「manage」というフォルダを作りました。
この管理用フォルダの名前は、ブログの記事のリンク名やカテゴリーのスラッグとは重ならないようにします。
PHPで記事一覧のスクリプト
データベースに接続するスクリプト
データベースに接続するスクリプトを作ります。
別ファイルにしておくと、他にも自作したい時に使えるので便利です。
ファイル名は「func_db.php」にしました。
<?php
function get_db(){
$dsn = "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET;
try{
// DB接続
$db = new PDO($dsn, DB_USER, DB_PASSWORD);
}catch (PDOException $e){
echo "Error:".$e->getMessage();
die();
}
return $db;
}
記事一覧を表示するスクリプト
記事一覧を表示するスクリプトです。
ファイル名は「blog_list.php」にしました。
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", FALSE);
header("Pragma: no-cache");
header("X-Robots-Tag: noindex, nofollow");
require_once "../wp-config.php";
require_once "func_db.php";
$db = get_db();
$sql = "SELECT ID,post_title,post_date
FROM {$table_prefix}posts
WHERE post_type = 'post' AND post_status = 'publish'
ORDER BY post_date DESC";
$res = $db->query($sql);
if($res){
$data = $res->fetchAll(PDO::FETCH_ASSOC);
$data_cnt = count($data);
if($data_cnt > 0){
echo "<table><tr><td class='td_c'>ID</td><td class='td_c'>タイトル</td><td class='td_c'>公開日時</td></tr>";
foreach ($data as $key => $val) {
echo "<tr><td>".$val['ID']."</td><td>".$val['post_title']."</td><td>".$val['post_date']."</td></tr>";
}
echo "</table>";
echo "<style>td{padding:5px;border:solid gray 1px;} .td_c{text-align:center;}</style>";
}
}
$res = null;
$db = null;
2~6行目:キャッシュを無効にしています。
7行目:インデックスを無効にしています。
9行目:WordPressの設定を読み込んでいます。
10行目:データベースに接続するスクリプト「func_db.php」を読み込んでいます。
12行目:「func_db.php」でデータベースに接続しています。
14~17行目:記事が保存されているテーブルから、公開済の記事を公開日時を降順で取得するSQLです。
18行目:SQLを実行しています。
19~30行目:取得したデータをブラウザに表示しています。
32~33行目:データベース接続を閉じます。
「func_db.php」と「blog_list.php」をサーバーの「manage」にアップロードし、ブラウザで「https://ドメイン/manage/blog_list.php」にアクセスすると下図のように表示されます。