カスタムタクソノミーのリンク表示

[備忘録]
WordPressでカスタム投稿タイプとそれに付随するカスタムタクソノミー(custom taxonomy カスタム分類)を導入したのだが,それらを各記事のところに表示する方法。

get_the_term_list という関数を用いると,リンク付きの文字列が得られる。使用中のテーマは,WordPress3.5付属のTwenty Twelve というもの。functions.php を修正するのだが,直接変更せずに,Child Theme (子テーマ) を作って,そちらに functions.php を作って,修正する。具体的には,twentytwelve_entry_meta() の中で,次のような記述をすればよい。

echo '分野:' . get_the_term_list($post->ID,'math_cat','',', ');

もっとも,これは単純すぎるので,実際にはカスタム分類があるときに限って表示するようなif文にするのだが。

これで,デフォルトの「投稿」と同じ形式で記事の末尾などに,カスタム分類の項目と,そのアーカイブへのリンクを出力することが出来た。

WordPressでカテゴリー一括登録を手動で行う実験

カテゴリーを一括登録するプラグインもいくつか使ってみたが,その場で登録するものばかりで,事前に用意されたテキストファイルなどを読み込んで,一括して登録するものは見当たらなかった。そこで,見よう見まねで自作することにした。

利用するのは,wp_create_category() という WordPress の内部関数。これを使うためには,これが定義されているファイルをインクルードしなくてはならないらしい。

改行で区切った文字列をヒアドキュメントで定義して,これを改行で分割して配列にする。そして,配列の各々の文字列に対して,カテゴリーとして登録するというもの。

// カテゴリーを手動で登録する実験
function create_my_categories() {
$cat_str =
<<<CATDATA
初等数論
可換環論
ガロア理論
代数曲線論
複素多様体
代数的数論
解析的数論
CATDATA;

	include_once(ABSPATH . 'wp-load.php');
	include_once(ABSPATH . 'wp-admin/includes/taxonomy.php');

	$cat_array = explode("\n", $cat_str);
	foreach($cat_array as $value) {
		wp_create_category($value);
	}
}

とりあえず,実験は成功。自家用としては,これを functions.php に追加して,

add_action('init', 'create_my_categories');

とかすれば良い。汎用性を考えるならファイルから読み込むようにしてプラグインとして動作させるのが良いのだろう。プラグインの作り方,すっかり忘れてしまったが・・・。

Advanced Custom Fields を使ってみる

相変わらず MAMP でローカルにWordPressでのデータベース構築実験,続行中。

標準のカテゴリーだけで処理することも可能かもだが,将来的なことも考えて,Advanced Custom Fields (ACF) というプラグインを試してみることにした。かなり意欲的なプラグインであり,独自APIまでいろいろと準備されている。

オフィシャルサイトのDocumentationとかサンプルを少し読んで,とりあえず自分で作成したフィールドを記事に表示させることが出来たので,忘れないようにメモ。使うのは,get_field, the_field という関数(API)たち。

直にHTMLというかPHPを書き込んでも良いのだが,これも将来的なことを考えて,関数にしてみた。オフィシャルの the_category() という関数のソースを参考にして,適当に自分の関数を定義してみる。例えば名前を show_my_fields() としてみよう。これを,使っているテーマ付属の functions.php の末尾にでも追加する。PHPはまるっきりの初心者で,文字列結合の演算子とかも知らないものだから,思いっきり冗長なベタ書きコードになっているが,まあ,とりあえず動作したということで。

<?php

function show_my_fields( $post_id=false ) {
	if ( get_field('shutten')) {
		echo '<span class="metacat">';
		echo "出典: ";
		echo get_field('shutten');
		if ( get_field('opt')) {
			echo get_field('opt');
		}
		echo "</span>";
	}
}

?>

そして,これをフィールドを表示させたいところに,

 show_my_fields() 

と書けばよい。これで,独自フィールドの表示は成功。

次は,標準のカテゴリー表示のように,特定のフィールドに合致するエントリーをアーカイブとして表示させたいのだが,まだどうしてよいか分からない状態。フィールドに一致するエントリー全体の配列かなにかを返してくれる関数(API)があるはずだとは思うのだが。

あと,PHPの文法も少し勉強しなくては。というか,PHPって,コードとHTMLが同時に混ざっているって,どういう仕様なんだ〜 😯 とか思うのだが。不思議な言語ではある 😉 。

CSV Importerを使ってみた

MAMP上でのWordPressで,簡易データベース構築の実験中。既存の文書から一括して登録するために,ツールをあれこれ探してしるが,CSV Importer というプラグインがあったので,使ってみた。インポートしたいデータをCSV (Comma Separated Value) の形にしておけば,一括して読み込めるというもの。

試した結果,何とか使えそうだが,いくつか問題点も。自分の用途だと,改行のタブとかパラグラフのpタグなどが自動で追加されるのは,ちょっと迷惑。ということで,ソースを読んで改造。

'post_content' => wpautop(convert_chars($data['csv_post_post'])),

という箇所で,記事の本体が取り込まれているのだが,wpautop という関数によって,タグ付きに整形されている。wpautop をはずすことで,タグが付かない元の文章のままで読み込むことが出来た。これで1つ解決。

もう1つは少しやっかい。数学の文章なので,TeXで書いてあるのだが,バックスラッシュが消滅してしまうのだ。記事本体は,ダブルクオートで囲まれていて,そこの部分を1つの文字変数に代入していると思うのだが,その段階で,バックスラッシュがメタ文字と解釈されているのだと思う。試しに,変換前の文章でバックスラッシュ2個にしてみたら,変換後はバックスラッシュ1個になっていたので,多分間違いないと思う。これをどうしたものか。

WordPressにPDFを埋め込んで表示するプラグイン

探してみると,そのものずばりの embed pdf というプラグインがあった。これを使えば,サーバーにあっぷしたPDFを直接表示できるようだ。適当なPDFがなかったので,以前ちょっと書きかけて,やめてしまった文書で実験。 “WordPressにPDFを埋め込んで表示するプラグイン” の続きを読む

MAMP上でWordPressをインストール

MAMPを入れたあとは,WordPressをMAMP上にインストール。これで,ローカルであれこれ実験できる環境が出来た。まずは,MathJaxとmathjax-latexプラグインを入れて,数式が表示できるようにした。そのままだとダラーで囲んだ部分が変換されないので,default.jsを編集して,ダラーを有効に,また,amsmathを有効にした。

実験というのは,WordPressを簡易データベースの代わりにできないかということ。カテゴリーやタグなどの機能があるから,十分可能性はあると思うのだが。

MySQL5へ移行

WordPress (この日記で使っているブログツール) を最新の 2.9.2 にバージョンアップしようとしたら,MySQL4.2 以上でないとダメという警告が出てアップ出来なかった。調べてみると,現在使用中のバージョンは4.0.22 だった。レンタルサーバーのサイトに行くと,MySQL 5 に移行できるとあったので,おっかなびっくり移行してみた。まずは,現状のデータベースをバックアップ。そして MySQL 5 を暫定使用。大丈夫そうなので,このまま移行できそうな感じ。

改行で悩む

mimeTeXを使ってLaTeX形式の数式を画像に変換するプラグインを作って使用しているのだが、細かい仕様をどうしたものかと悩み中なり 🙄

最初は、記事全体をLaTeX文書とみなし、[dec] $…$ [/dec] の部分を文中の数式、[dec] \[…\] [/dec]の部分を別組み数式として処理していたのだが、そうすると、数式と関係ない文章で、$記号が使えないことになる。そこで、[dec] [/dec] で囲んだパラグラフだけを変換するように変更した。これで一件落着と思ったら、今度は改行で悩むことになった。

LaTeXでは、改行は基本的に無視されるか、半角のスペースと同値になる。それに慣れているのと、その方が都合が良いことが多いので、LaTeXの部分はそうしている。そのために、WordPressのデフォルトである wpautop というフィルターをオフにしたのだが、そうすると、LaTeXじゃないパラグラフもフィルターを通さないために、パラグラフを p タグで [dec]

[/dec] と括る作業を自動的にやってくれない。見る分には困らないが、XHTML的にValidでなくなってしまい、悲しい 😥

そこで、LaTeXの部分のみ改行を [dec]
[/dec] タグに変換しないようにした。ところが、実際に使ってみると、数式のない文章でも、改行を [dec]
[/dec] タグに変換しない方が良いなあという場面が、何回か出てくるなりなりよ~ 🙄  どうしたものかと、弱っているなり 🙄

日記のお引っ越し

今までMovableTypeなる日記ツールで書いてきたが(http://njet.oops.jp/mt/ )、再構築が面倒だとか、それ以外にも理由はあるが、WordPressという日記ツールに変更することにした。しばらく前から、数式記述のための自家製プラグインを入れたりとか、いろいろ調整していたが、なんとか使えるようになったと思うので、今日から移転することにした。まだもうちょっとあちこち改善してから、という気持ちもあるのだが、思い切って移転しないと何時できることやら、という気持ちもあるし。

試運転

テキストのフィルターを最低限にしているものだから、引用とか箇条書きとか、さまざまなタグを使うと、変なマークアップになってしまうのだが、とりあえず普段の日記を書く上では支障がなさそう。
とりあえず、しばらく使ってみよう。