てがろぐ
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
を作成- 使用中の
header.php
をコピーして子テーマにheader-t.php
を作成- 子テーマに無ければ親テーマからコピーする。子テーマが無ければ作成する
header-t.php
のヘッダを編集<?php wp_head(); ?>
の前にtitle、後にCSSとOGP追加
<title>[[SITUATION:TITLE]] [[FREE:TITLE:MAIN]] [[FREE:TITLE:SUB]]</title>
<?php wp_head(); ?>
<link type="text/css" rel="stylesheet" href="tegalog.css">
[[OGP]]
function.php
に関数を追加- WPヘッダ→
skin-pre.html
→WPフッタを取り込みskin-cover.html
を出力する関数を作成
(file_put_contents
関数は非推奨の為、WP_FileSystem
を使用) - アクションフック
publish_post
に関数を追加
- WPヘッダ→
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('t');
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