@Blog
過去の蓄積を見るために書く日記.

LLMO対策の前手順として、マークダウン記法を施しました.
2025.09.02
おはようございます.LLMO対策の前手順として、マークダウン記法を施しました.シングルページにマークダウン記法のリンクがそれぞれの記事にあると思います.
そのリンクをクリックするとマークダウン記法が表示されます.LLMO設置後、LLMs.txtを設置すれば良いらしいので、そちらも近日中に対応する予定です.尚、この記事がUPされている頃にはLLMs.txtの設置が終わっている気もします.
追伸:LLMs.txtの設置が終わりました、ルートに設置しています.LLMs.txtはマークダウン記法が記載されているURL(リンク)を一行ずつ表示するような形式で良いらしいです.
これをチャッピーさんにプラグインにして貰いましたのでお裾分けです.下記のプラグインを導入すると全記事URL(パラメーター(マークダウン記法と認識させる))が発行されます.
※マークダウン記法したページはご自身で作る必要があります.
<?php
/*
Plugin Name: LLMS URL Exporter (Fixed)
Description: 公開記事のURLをuploads/llms.txt に日付降順で出力します。管理画面のボタンで非同期(AJAX)実行。新規公開時は先頭に追記。
Version: 1.1
Author: taoka toshiaki
*/
if ( ! defined( 'ABSPATH' ) ) exit;
class LLMS_URL_Exporter {
private $file;
public function __construct() {
$this->file = $_SERVER['DOCUMENT_ROOT'] . '/llms.txt';
add_action( 'admin_menu', [ $this, 'add_admin_page' ] );
add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_admin_script' ] );
// AJAX (管理画面からの呼び出し = ログインユーザー用)
add_action( 'wp_ajax_llms_generate_urls', [ $this, 'generate_urls' ] );
// 投稿が公開になったとき(状態遷移を監視)
add_action( 'transition_post_status', [ $this, 'on_transition_post_status' ], 10, 3 );
register_activation_hook( __FILE__, [ $this, 'create_file_on_activate' ] );
}
public function create_file_on_activate() {
$dir = dirname( $this->file );
if ( ! is_dir( $dir ) ) {
wp_mkdir_p( $dir );
}
if ( ! file_exists( $this->file ) ) {
@file_put_contents( $this->file, "" );
}
}
public function add_admin_page() {
add_menu_page(
'LLMS URL Exporter',
'LLMS Export',
'manage_options',
'llms-url-exporter',
[ $this, 'admin_page_html' ]
);
}
public function enqueue_admin_script( $hook ) {
// 管理画面の当該ページだけに読み込む
if ( $hook !== 'toplevel_page_llms-url-exporter' ) return;
// jQuery は管理画面に既に存在
wp_enqueue_script( 'llms-admin', plugins_url( 'llms-admin.js', __FILE__ ), [ 'jquery' ], '1.0', true );
wp_localize_script( 'llms-admin', 'LLMS_Ajax', [
'ajax_url' => admin_url( 'admin-ajax.php' ),
'nonce' => wp_create_nonce( 'llms_generate_urls_nonce' ),
] );
// もし外部ファイルを用意しないなら、admin_page_html 内の inline script がフォールバックになります。
}
public function admin_page_html() {
?>
<div class="wrap">
<h1>LLMS URL Exporter</h1>
<p>公開中の全投稿URLを <code>/llms.txt</code> に日付降順で書き出します。</p>
<button id="llms-generate-btn" class="button button-primary">全記事URLを書き出す</button>
<div id="llms-result" style="margin-top:12px;"></div>
</div>
<?php
// フォールバック用のインラインスクリプト(もし外部 JS を作らない場合に有効)
$nonce = wp_create_nonce( 'llms_generate_urls_nonce' );
$ajax_url = admin_url( 'admin-ajax.php' );
?>
<script type="text/javascript">
jQuery(function($){
$('#llms-generate-btn').on('click', function(){
var $res = $('#llms-result');
$res.text('処理中...');
var data = {
action: 'llms_generate_urls',
_ajax_nonce: (typeof LLMS_Ajax !== 'undefined' ? LLMS_Ajax.nonce : '<?php echo esc_js( $nonce ); ?>')
};
var url = (typeof LLMS_Ajax !== 'undefined' ? LLMS_Ajax.ajax_url : '<?php echo esc_js( $ajax_url ); ?>');
$.post(url, data, function(response){
if ( response && response.success ) {
$res.html( response.data.message );
} else if ( response && response.data && response.data.message ) {
$res.html('エラー: ' + response.data.message);
} else {
$res.html('不明なレスポンス: ' + JSON.stringify(response));
}
}).fail(function(jqXHR, textStatus, errorThrown){
$res.html('AJAX エラー: ' + textStatus + ' ' + errorThrown + ' (status: ' + jqXHR.status + ')');
});
});
});
</script>
<?php
}
// AJAX ハンドラ
public function generate_urls() {
// nonce と権限チェック
check_ajax_referer( 'llms_generate_urls_nonce', '_ajax_nonce' );
if ( ! current_user_can( 'manage_options' ) ) {
wp_send_json_error( [ 'message' => '権限がありません。' ], 403 );
}
$args = [
'post_type' => 'post',
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'DESC',
'posts_per_page' => -1,
'no_found_rows' => true,
'fields' => 'ids',
];
$posts = get_posts( $args );
$urls = [];
foreach ( $posts as $pid ) {
$permalink = get_permalink( $pid );
if ( $permalink ) $urls[] = $permalink.'?md=1';
}
$content = implode("\n", $urls);
$written = @file_put_contents( $this->file, $content );
if ( $written === false ) {
$err = error_get_last();
$msg = isset( $err['message'] ) ? $err['message'] : '不明な書き込みエラー';
wp_send_json_error( [ 'message' => 'ファイル書き込みに失敗しました: ' . $msg ] );
}
wp_send_json_success( [ 'message' => 'llms.txt に ' . count( $urls ) . ' 件のURLを書き出しました。' ] );
}
// 公開判定:状態遷移で publish になったときに先頭へ追加
public function on_transition_post_status( $new_status, $old_status, $post ) {
if ( $post->post_type !== 'post' ) return;
if ( $new_status === 'publish' && $old_status !== 'publish' ) {
$url = get_permalink( $post->ID ).'?md=1';
$current = '';
if ( file_exists( $this->file ) ) {
$current = file_get_contents( $this->file );
}
// 既存の同一URLがあれば削除して先頭へ
$lines = array_filter( array_map( 'trim', explode("\n", $current ) ) );
$lines = array_values( array_diff( $lines, [ $url ] ) );
array_unshift( $lines, $url );
$new_content = implode("\n", $lines);
@file_put_contents( $this->file, $new_content );
}
}
}
new LLMS_URL_Exporter();
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
```, いん, インライン, エラー, お裾分け, クリック, これ, サン, シングル, スクリプト, そちら, それぞれ, ダウン, チェック, チャッピー, とき, パラメーター, ハンドラ, ファイル, フォールバック, フラグ, ページ, ボタン, マーク, ユーザー, よう, リンク, ルート, レスポンス, ログイン, 一行, 下記, 不明, 予定, 先頭, 公開, 処理, 出力, 判定, 削除, 同一, 呼び出し, 場合, 外部, 失敗, 存在, 実行, 対応, 対策, 導入, 当該, 形式, 必要, 手順, 投稿, 新規, 既存, 日付, 明日, 書き込み, 有効, 権限, 状態, 用意, 画面, 発行, 監視, 管理, 自身, 表示, 記事, 記法, 記載, 設置, 認識, 近日, 追伸, 追加, 追記, 遷移, 降順, 非同期,

ブログをワードプレスからLaravelへ
2025.09.01
おはようございます.ブログをワードプレスからLaravelへ置き換えていこうか悩んでいます.チャッピーさんで調べった結果.
WordPress を Laravel に統合またはブログを移行する際に使える「プラグイン」やライブラリについて、おすすめの方法とその特徴を整理してご紹介します。
おすすめの主要アプローチ
1. Corcel
- WordPress データ(投稿、カスタム投稿タイプ、メタデータなど)を Laravel から直接取得できる Eloquent ベースの橋渡しライブラリです。Composer で簡単にインストールでき、設定ファイルで WP の DB 接続やモデル構成を指定可能です。(WP Engine, GitHub)
- WordPress を「バックエンド」として活用しつつ、Laravel を「フロントエンド/アプリロジック基盤」として完全に使いたい場合に最適です。
2. WordPress Pete
- WordPress 側にプラグイン(アプリのように動作)として組み込み、WordPress 管理画面から Laravel との統合を設定できます。試用も可能です。(WP Engine, Aalpha)
- Laravel 側から WordPress コンテンツを表示・活用したい場合に便利です。
3. Acorn
- Roots.io が開発したライブラリで、Laravel の Blade テンプレートや Artisan コマンド、マイグレーション機能を WordPress 内で使えるようにします。(Roots)
- WordPress 内でモダンな Laravel 開発体験(Blade, Artisan, Migration)ができるようになります。例えとして:
wp acorn make:controller
や Blade テンプレートの活用など。(Roots)
その他のアプローチ・参考情報
- WordPress REST API を使う方法
WordPress から REST API 経由でコンテンツを取得し、Laravel 側で API 呼び出しする形もあり。比較的シンプルです。(Laracasts, Codeable) - 中ミドル層としての統合
Laravel をバックエンド、WordPress をフロントエンドに設定し、ログイン機能や API 呼び出しを含めた構成も可能です。(Medium) - Reddit 上の意見
Laravel はあくまで「フレームワーク」であり、WordPress は即使える CMS。ブログ用途中心であれば WordPress のままでも十分との声もあります。但し、October CMS や Canvas のような Laravel ベース CMS を使う選択肢もあります。(Reddit)
比較まとめ
方法 | 特徴・用途 |
---|---|
Corcel | WordPress DB を Laravel で直接使う。柔軟で強力。 |
WordPress Pete | WordPress 管理画面から簡単に Laravel 連携を設定可能。 |
Acorn | WordPress 内で Laravel 開発体験(Blade, Artisan)を実現。 |
REST API | API 経由で疎結合に統合。軽量で保守性あり。 |
Laravel CMS (Canvas, October CMS) | Laravel 上に CMS 機能を構築したい場合に有効。 |
まとめ
- 即時利用・簡単統合:まずは WordPress Pete を試してみるのがおすすめ。
- 柔軟で高性能な連携 を求めるなら、Corcel による直接 DB アクセスが強み。
- 開発体験の統一(Blade や Artisan を WordPress 内で使いたい場合)は Acorn が魅力的です。
- 軽めの統合・API中心構成 を望む場合は、REST API を使ったアプローチも便利です。
という結果が返ってきたわけですが、一番妥当なのはCorcelかなと思っています、ただ、本当に移行するかは結構大変な感じがします.移植すれば後々、いろいろと出来ることが広がるかなと思っています.フロント側をvue(ビュー)かReact(リアクト)に変更するにしてもメンテは楽になりそうな予感もします.
悩ましいですね…
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
```, (:, アクセス, アプリ, アプリロジック, アプローチ, いん, インストール, エンド, おすすめ, カスタム, こと, コマンド, コンテンツ, サン, シンプル, そう, その他, タイプ, チャッピー, データ, テンプレート, バック, ビュー, ファイル, フラグ, フレーム, プレス, ブログ, フロント, ベース, マイグレーション, まとめ, まま, ミドル, メタデータ, メンテ, モダン, モデル, よう, ライブラリ, リアクト, ログイン, ワーク, ワード, わけ, 一番, 中心, 主要, 予感, 体験, 便利, 保守, 利用, 動作, 十分, 即時, 参考, 取得, 可能, 呼び出し, 基盤, 場合, 変更, 大変, 妥当, 完全, 実現, 強み, 強力, 後々, 情報, 意見, 感じ, 投稿, 指定, 接続, 整理, 方法, 明日, 最適, 有効, 柔軟, 構成, 構築, 橋渡し, 機能, 比較, 活用, 特徴, 用途, 画面, 直接, 移植, 移行, 管理, 簡単, 紹介, 経由, 結合, 結果, 統一, 統合, 表示, 設定, 試用, 軽量, 連携, 選択肢, 開発, 高性能, 魅力,
映画、チャッピーを観てきましたので感想なんかを。 #映画レビュー
2015.05.23
映画、チャッピーを観てきましたので感想なんかを残しときます。この映画、期待度No.1だそうです、映画を観た感想ですが意外に、良かったです。最初はちょっと生々しいと思う映像ですけど、徐々に慣れてくると見れる映画だと思います。例えると初期のワイルドスピードみたいな映像です。この映画、若干、暴力的なシーンがあるもののストーリーは結構しっかりしていました。有りがちな内容だとは思うものの最後まで飽きのこない感じに作られていました。ただ、「テンション」っていう服は無いなと思ってしました{あっ(´Д`)?間違った格好いい日本語だと心の中でツッコミをいれた人はいると思います!!}、この場面でテンションって映像はないだろと思いました・・・・、日本人なら映画よりその服に書いているテンションって言う文字に目が付くと思います。最後の最後で若干やらかした感はあるものの内容的はよかったです。
ちなみに、この頃の人工知能を取り扱った映画って、こう言う落ちが多い気がします。落ちの内容は言いませんが、実際それって命って何だろうとか、心って何だろうとか。そういう事につながってくると思うですよね。いずれ人類は自我(意識)のある人工知能を作ってしまうでしょうけど・・・そうなった時、人の想像を超えることが起きてもおかしくはないと思います。SF映画って基本的に警鐘を鳴らす意味合いも込められて作られていると思うですね、今回のチャッピーという映画も同じような警鐘を鳴らしていたということは、近い未来なのか遠い未来なのかは分かりませんが、そうなってもおかしくないという事なんだと思います。そこまで考えて観る人はあまりいないような気がしますが、監督は何か意図するところがあっただと思います。また、ニール・ブロムカンプ監督の映画って、「第9地区」、「エリジウム」そして「チャッピー」とストーリーの中に必ず貧困層が出てきます。おそらく次回作にも貧困層が出てくるでは無いかと思ってます。それは何か監督の意図があるからだと思います。
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, no, シーン, ストーリー, スピード, チャッピー, ツッコミ, テンション, レビュー, ワイルド, 中, 人, 人工, 内容, 初期, 場面, 心, 感, 感じ, 感想, 文字, 日本人, 日本語, 映像, 映画, 最初, 最後, 服, 期待, 目, 知能, 若干, 言, 頃,