WordPressのping制御プラグイン
もう一個WordPressのプラグインを作った。
今、記事投稿の自動化プログラムを作成している。このプログラム自体はXML-RPCを使っていて、基本的に以前から使用している機能の寄せ集めなのだが、いろいろ調べていくと・・・、XML-RPCによる記事投稿の際でも、その都度更新pingを送信してくれることがわかった。
これはこれで便利なのだが、1度に10件プログラムで記事投稿すると10回ping送信してしまうことになる。下手をするとpingスパムととられかねない(こういう細かいところはブログツールによって使用が違うようだ)。
そこである一定時間内であればping送信を実行しないよう制御するWordPressプラグインを作成した。ダウンロードは以下のリンクからどうぞ。
CWPC control sending ping plugin for WordPresspso
<?
/*
Plugin Name: CW ping controller
Plugin URI: http://php.tekmemo.com/
Description: Control the continuous sending of ping. This program prohibits sending ping in the specified interval.
Author: kaorun
Author URI: http://php.tekmemo.com/
Version: alpha
*/
class cwpc
{
var $lastsend;
var $interval;
function cwpc()
{
$this->lastsend=intval(get_option(‘cwpc_lastsend’));
$this->interval=intval(get_option(‘cwpc_interval’));
}
function process($postId=0)
{
$now=intval(date(‘U’));
if($now > $this->lastsend + $this->interval){
generic_ping($postId);
update_option(‘cwpc_lastsend’,$now);
}
return $postId;
}
function admin()
{
add_options_page(‘options-general.php’, ‘CWPC’, 8, basename(__FILE__), array(&$this,’processAdmin’));
}
function processAdmin()
{
add_option(‘cwpc_lastsend’,’0′);
add_option(‘cwpc_interval’,’60’);
if(strtolower($_SERVER[‘REQUEST_METHOD’])==’post’){
//update_option(‘cwpc_lastsend’,’0′);
update_option(‘cwpc_interval’,intval($_POST[‘cwpc_interval’]));
}
$values=array();
$values[‘cwpc_interval’]=get_option(‘cwpc_interval’);
$cwpcOutput=”;
$cwpcOutput.='<div class=”wrap”>';
$cwpcOutput.='<h2>CWPC setting</h2>';
$cwpcOutput.='<form name=”form1″ method=”post” action=”‘.$_SERVER[‘PHP_SELF’].’?page=cwpc.php”>';
$cwpcOutput.='<table cellspacing=”2″ cellpadding=”5″ class=”editform”>';
$cwpcOutput.='<tr>';
$cwpcOutput.='<td>Seconds to prohibit the sending ping</td>';
$cwpcOutput.='<td><input type=”text” name=”cwpc_interval” value=”‘.$values[‘cwpc_interval’].'” size=”10″></td>';
$cwpcOutput.='</tr>';
$cwpcOutput.='</table>';
$cwpcOutput.='<input type=”submit” value=”submit” />';
$cwpcOutput.='</form>';
$cwpcOutput.='</div>';
echo $cwpcOutput;
}
}
$cwpcObj=& new cwpc;
add_action(‘admin_menu’, array(&$cwpcObj,’admin’));
remove_action(“publish_post”, “generic_ping”);
add_action(‘publish_post’, array(&$cwpcObj,’process’), 2);