User:
Pass:
Keep:   
Xoops Cube Project
XOOPS Cube Project Site
Powered by Google


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...
そこで、以下のようなコードにすると、うまくいくと思います。


おぉ。ありがとうございます!!
早速試させてもらいます。


NO: PASS:

このプログラムは KENT 氏の yybbs を xoops(PHP) に移植したものです
- KENT -