【AIが勝手に投稿するブログ開発シリーズ】保存した記事取得を取得するプログラム(PDO使用)とWordPressへの組み込み
| 更新: 2024/09/21 | 2345文字
今回は、管理人が最近作っていたアプリケーション『AIが勝手に投稿するブログ』のシリーズで、『保存した記事取得を取得するプログラムとWordPressへの組み込み』を行っていきます。geminiというよりは、データベースから記事取ってくるとか、WordPressの固定ページで表示される、といった内容です。早速見ていきましょう
目次
前回までの内容~geminiで生成した文章をデータベースに保存&自動実行
(過去記事)プロンプト変数を生成クラスに渡す・データベース保存・自動実行などの機能作成
https://division-web.atelier-ss-agency.com/10568/gemini-php-save-to-database/
また現在運用している『AIが勝手に投稿するブログ』のリンクは以下の通りです。こちらは現在、管理人が全く手を加えずに、aiがブログを投稿してくれています。
ナビゲーターブログ|著作権フリー・無料音楽素材サイト SSF
https://ssf.atelier-ss-agency.com/nav-autoblog/
gemini生成&データベース保存した記事を取得するプログラム(dbConnectAndGetClass.php)
前回記事、ディレクトリで述べたところの『controllers/dbConnectAndGetClass.php』に当たるコードです。コンストラクタでself::getAutoPost(記事取得)して接続情報はすぐ空にしています。メソッドはgetAutoPost(記事取得),convCat(カテゴリをCSSクラスに変換),echoPagination(ページネーション出力)があります。ページネーションは10件以上で作ったんですけど、既にgeminiが10件以上の記事を生成していたため、判定の意味がありませんでした(笑)
あと、サーバー変数のREQUEST_URIで『urlにnav-autoblogスラッグが入っていた場合256件取る、そのほか3件』みたいなのも付けましたが、今のところはnav-autoblogページでしか運用していません。ただし、トップページで3件みたいなときは1メソッドで使いまわしができそうです。
基本的には PDOクラスに『LIMIT $postnum件、ORDER BY $id順』のようなSQLを渡しているだけなのでシンプルです。execute(実行)、rowCount(件数)、fetchAll(結果セットから取得)のような、PDOメソッドをメインに使っています。
PHP Data Objects(PDO)-phpマニュアル
https://www.php.net/manual/ja/book.pdo.php
WordPress固定ページで表示する方法
上記のファイルをrequireで読んで、new dbConnectAndGetClass()で実行すれば、記事が出てくるようになりました。しかしつけようとしているサイトSSFはWordpressで構築されています。ここではWordpress固定ページでこの一覧がでるように、組み込みを行ってみます。
まずは『asset(css・アイコン・js),controllers(記事取得や生成),prompts(プロンプト・システム指示),vendor(geminiライブラリ)』一式ファイルをサーバーに上げます。WPディレクトリにサイト用サブドメインをあてている関係で、そこに上げました(あんまりよくないかもしれません)。接頭辞でWPと区別がつくようにしています。
次に、スラッグ指定して固定ページ作りました。このスラッグはurl判定にも使います。
管理人のテーマでは、ヘッダーテンプレート内にstyleタグ入れて、追加CSSを出力するようにしているんですけど、ここに取ってきた記事表示用のCSSを出力。このCSSではカテゴリ色分けとかも定義しています。
たぶん一番のポイント。page-〇〇.phpで、スラッグ指定で読み込む固定ページテンプレート
page.php内でis_pageで判定しても良いんですけど、完全に違う一列レイアウトになるので、この方法を選択。
ここでは$inst=new dbConnectAndGetClassのように書いてインスタンス化&実行、$inst->echoPagination()のように書いてメソッド実行しました。
そんな感じで、AIが勝手に投稿するブログが完成。管理人のことを変わり者とかたまに好き勝手書いていますが、まだ学習が十分じゃないということにしておきます(笑)
あとがき・まとめ
- gemini生成文はデータベースに保存してしまえば、PDOクラスを使ってブログのように取り出せる
- WordPress固定ページ組み込み時は、page-〇〇.phpで、スラッグ指定で読み込むテンプレートが使える
- スラッグ指定で読み込むテンプレート上で、作ったクラスのメソッド実行する
まとめると、こんなところでしょうか。WPに組み込んだけど、テーブルなどは完全に独立しておりPDOクラスを使えるとなんとかなった印象でした。
【カテゴリ】- PHP
【タグ】- AIが勝手に投稿するブログ開発シリーズ, PDOクラス(PHP), WordPress