てがろぐ
https://www.nishishi.com/cgi/tegalog/
自鯖にマイクロブログを置けるCGI。何とも懐かしいデザイン(CGI自体が懐かしい)だが2017年作で、更新も精力的になされている。Spotify等の埋め込みにも対応している最新スクリプトである。
CSSとスキン(懐かしい)で自由にデザイン出来るという事で、WordPress製サイトの一部として馴染むように設置を試みた。
スキンの構成
- skin-cover.html ページ全体
- skin-onelog.html ↑に差し込まれる記事部分
- tegalog.css
skin-cover.html
にWordPressのヘッダとフッタを読み込ませたい。
ヘッダ内サイドバーには最新記事リスト等があるので自動生成したい。
WordPressのパーツ付きスキンを自動生成
skin-cover.html
からヘッダ・フッタを削除したskin-pre.html
を作成
(title、css、OGPはdocument.title
、insertAdjacentHTML
でヘッダ内に追加)
<script>
document.title = '[[SITUATION:TITLE]] [[FREE:TITLE:MAIN]] [[FREE:TITLE:SUB]]'
const head = document.head;
head.insertAdjacentHTML('beforeEnd', '<link type="text/css" rel="stylesheet" href="tegalog.css">' + `[[OGP]]`);
</script>
- WordPressヘッダ→
skin-pre.html
→WordPressフッタを取り込みskin-cover.html
を出力する関数を作成
(file_put_contents
関数は非推奨の為、WP_FileSystem
を使用) function.php
でアクションフックpublish_post
に関数を追加
function tg_skin() {
require_once(ABSPATH.'wp-admin/includes/file.php');
if (WP_Filesystem()) {
global $wp_filesystem;
ob_start();
include(ABSPATH.'wp-load.php');
get_header();
include(ABSPATH.'../tg/skin-pre.html');
get_footer();
$wp_filesystem->put_contents(ABSPATH.'../tg/skin-cover.html', ob_get_contents());
ob_end_clean();
}
}
add_action('publish_post', 'tg_skin');
publish_post
フックによってWordPressの記事を投稿・更新した際に作動し、てがろぐフォルダにskin-cover.html
が生成される。
参考
- WordPressで新規投稿や更新のタイミングに合わせて静的ファイルを出力する方法 – Sakura scope
- PHPでincludeした時に出力される文字列を変数に入れたい – ワープボタン
- WordPressでファイル操作をする時は、PHPの標準関数を使うのは非推奨!?WP_FileSystemを使うようにしよう! – Qiita