| 最新の投稿-WordPress |
- 2004-6-20
- 2004-4-25
- 2004-4-22
- 2004-4-18
|
| 最新の投稿-雑記 |
- 2004-5-20
- 2004-3-24
- 2004-2-23
- 2004-2-21
|

Powered by XOOPS Cube Legacy 2.1.8
PukiWikiMod 1.5.1
WordPress Module 0.6.0 Alpha
|
|
| procmailでモブログ
投稿者:
tohokuaiki
投稿日:2004/10/04(Mon) 04:01
No.754 |
|
|
 |
こんにちは。精力的にサポートされてる姿には感服いたします。
気付かれてるかも知れませんし、既に実行されてる方もいると思いますが、 モブログするときのTIPSとして。
wgetなどで、外部からwp-mail.phpを定期的に読み込むのも手なのですが。 自宅サーバの方などは、procmailを使ってもよいのではないでしょうか。 なんと言っても、タイムラグなく投稿が反映されます。 (私はメールログが汚れるのが嫌だったのですが )
私は、.procmailrcに 引用: LOGFILE=$HOME/procmail.log MAILDIR=$HOME/MAIL DEFAULT=/var/mail/blog
:0 cHhb |/usr/local/bin/php -f /{PATH_TO_wp-mail.php}/wp-mail.php
とすれば、うまくできました。実は、wp-mail.phpを実行させた時にはまだspoolの mboxにはメールが来ていないのですが、wp-mail.phpを実行中にcフラグにより メールが作成されるのでこの辺はタイミングが微妙でうまく動作しなかったり 下手すると投稿が消えてしまう可能性もありそうですが。
なので、 :0 Hhb では、良いかなと思ったのですが、ダメでした…。
ただ、私は、No.670で投稿した自作プラグインを使っているのですが、wp-mai.phpは、プラグインを通してくれないんですね。
どうやって、プラグインを読んで実行しているか教えていただければ、 それをwp-mail.phpに記述したいのですが・・・。 |
|
Re: procmailでモブログ
投稿者:
のぶのぶ
投稿日:2004/10/04(Mon) 15:02
No.755 |
|
|
|
 |
引用: モブログするときのTIPSとして。
wgetなどで、外部からwp-mail.phpを定期的に読み込むのも手なのですが。 自宅サーバの方などは、procmailを使ってもよいのではないでしょうか。 なんと言っても、タイムラグなく投稿が反映されます。
なるほど〜、確かにタイムラグ無く投稿出来るのは良いですね! この方法を使うのであればPOP経由で無くってSTDINから読み込むようなものを考えても良いかもしれませんね!
引用: ただ、私は、No.670で投稿した自作プラグインを使っているのですが、wp-mai.phpは、プラグインを通してくれないんですね。
どうやって、プラグインを読んで実行しているか教えていただければ、 それをwp-mail.phpに記述したいのですが・・・。
少し気になって、update_notify.phpをダウンロードさせて頂いて試してみました。 確かにwp-mail.php経由だとお知らせメールが届きませんね! でも、wp-mail.phpの中では、do_action('publish_post', $post_ID); という形で、publish_post(投稿)時のプラグインを呼び出しているんですが・・・ で、update_notify.phpの中身を見させて頂いたんですが、実はこのプラグインが 画面からの投稿にしか対応していないようですね。update_notify.php内の
if (isset($_POST['publish'])) {
って部分で、wp-mail.phpからの呼出に関しては、はじかれてしまっているようです。 それに、タイトルや本文に関しても、$wp_content, $post_title, xoopsUserというグローバル変数が セットされている事が前提になっているようなので、このままではうまくいかないようですね。 WordPressのpublish_postのアクションに汎用的に対応するプラグインは、 パラメータとして渡された$post_IDを元にwp_postsテーブルから投稿された記事を引っ張り出して データ処理する事が前提となっているようです。 そこで、以下のようなコードにすると、うまくいくと思います。
function update_notify($post_ID) {
global $wpdb, $xoopsConfig, $wp_id ;
//わたされたpost_IDを元にテーブルを検索
$new_post = $wpdb->get_row("SELECT post_author, post_content, post_title, post_status FROM {$wpdb->posts[$wp_id]} WHERE ID=$post_ID LIMIT 1");
//記事がpublishの場合のみメール送信
if ($new_post->post_status == 'publish') {
$post_title = $new_post->post_title;
$wp_content = $new_post->post_content;
$auth_id = $new_post->post_author;
//記事の投稿者名を検索
$auth_rec = $wpdb->get_row("SELECT user_login FROM {$wpdb->users[$wp_id]} WHERE ID=$auth_id LIMIT 1");
$auth_name =$auth_rec->user_login;
/* This is the post title that's checked for the email list */
$settingpost = "updatenotify-list";
/* Get the email list. Only allow the list that's posted
by the admin and that's marked private
*/
if ( $email = $wpdb->get_row(" SELECT post_content FROM {$wpdb->posts[$wp_id]} WHERE post_title = '$settingpost' AND post_status = 'private' AND post_author = 1 LIMIT 1")) {
$recipients = array();
$recipients = split("[\n\r]",$email->post_content);
}
$subject = get_settings('blogname') . "の更新のお知らせ";
$name = get_settings('blogname');
$sender = $xoopsConfig['adminmail'] ;
$language = ucwords($xoopsConfig['language']) ;
if( strlen( $wp_content ) >= 300 ){
$wp_content1 = substr($wp_content, 0 , 300) . "... 続きは\n" . get_permalink($post_ID) ;
}else{
$wp_content1 = $wp_content ;
}
$text = $text . "このメールは自動投稿されています。\n";
$text = $text . $xoopsConfig['sitename'] . "の" . get_settings('blogname') . "を". $auth_name ."さんが更新しました。\n\n";
$text = $text . "タイトル: " . $post_title . "\n";
$text = $text . "テキスト:\n" . $wp_content1 ."\n\n";
$text = $text . "この記事に、下記URLからコメントを付けられます。ご意見お待ちしております。\n" . get_permalink($post_ID) . "#comments" ;
mb_language($language);
foreach($recipients as $recipient) {
if(!empty($recipient)) {
mb_send_mail($recipient,$subject,$text,"From:<$sender>");
}
}
}
}
add_action('publish_post', 'update_notify',8);
ご参考までに! |
|
Re[2]: procmailでモブログ
投稿者:
tohokuaiki
投稿日:2004/10/04(Mon) 16:03
No.756 |
|
|
|
 |
引用: のぶのぶさんは書きました: でも、wp-mail.phpの中では、do_action('publish_post', $post_ID); という形で、publish_post(投稿)時のプラグインを呼び出しているんですが・・・ ...zip... そこで、以下のようなコードにすると、うまくいくと思います。
おぉ。ありがとうございます!! 早速試させてもらいます。  |
|
このプログラムは KENT 氏の yybbs を xoops(PHP) に移植したものです
- KENT -
|