Ktai Entry 0.8.11
WordPress 2.9.1
事の善し悪しは置いといて、
functions.php に以下を追加するとそれらしい感じになります。
本文のどこかに行頭から META:キー=値 と書きます。
いくつでも可。重複キーの場合は後に書いた方が有効。
※メール投稿だけでなく、管理画面からの投稿でも動作します。
define('KE_SET_META', 'META:');
function my_insert_post($post_ID, $post){
global $wpdb;
$content = $post->post_content;
if(preg_match_all('/^(' . preg_quote(KE_SET_META, '/') . ')(.*)$/m', $content, $matches)){
foreach($matches[0] as $match)
$content = trim(preg_replace('/^' . preg_quote($match, '/') . '[ \t\r]*(\n|\z)/m', '', $content));
foreach($matches[2] as $match){
$meta = explode('=', $match);
if(count($meta) == 2)
update_post_meta($post_ID, $meta[0], $meta[1]);
}
$wpdb->update($wpdb->posts, array('post_content' => $content), array('ID' => $post_ID));
}
}
add_action('wp_insert_post', 'my_insert_post', 10, 2);
コマンド消す辺りがもっと簡潔になるといいな。
wp_insert_post フックですと、投稿リビジョンを使っていると不具合が出る可能性があります。publish_phone アクションを使うのが一番安全でしょう。phone_content フィルターは post ID が渡ってこないので、今回の用途では使えないです。
カスタムフィールド投稿機能を Ktai Entry に追加することはさほど難しくないんですが、
これ以上コマンドが増えてもややこしくなるだけなので、標準機能として追加することは慎重に検討が必要です。
この記事を拝見して試してみましたが
fatal error: call to undefined function add_action
とエラーが出てしまいました。
add_action(‘wp_insert_post’, ‘my_insert_post’, 10, 2);
の位置を変えたところエラーは出なくなりましたが
カスタムフィールドへ値が代入されず、本文にMETA:キー=値がそのまま残ります。
他に投稿できる方法はございませんでしょうか?