WP用てがろぐスキンを自動生成

てがろぐ
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のパーツ付きスキンを自動生成

  1. skin-cover.htmlからヘッダ・フッタを削除したskin-pre.htmlを作成
  2. 使用中のheader.phpをコピーして子テーマにheader-t.phpを作成
    • 子テーマに無ければ親テーマからコピーする。子テーマが無ければ作成する
  3. 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]]
  1. function.phpに関数を追加
    • WPヘッダ→skin-pre.html→WPフッタを取り込みskin-cover.htmlを出力する関数を作成
      (file_put_contents関数は非推奨の為、WP_FileSystemを使用)
    • アクションフック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('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が生成される。


参考