ErgoDoxを買ってうはうは普通のキーボードに戻れねーと思っている今日この頃。
とある案件で、脆弱性が~セキュリティが~とクライアントに言われてwp-cronを使えないことがありました。
でも予約投稿は欲しいです。わかりました勝手に作ってみます。
Apache: 2.4
PHP: 5.6
Mysql: 5.6
WordPress: 4.5.2
functions.php
/**
* wp-cronの代わりに予約投稿をする
*/
function my_cron_future_post(){
// wp_optionsの中からcronの情報を取得
$option_cron = get_option('cron');
$option_publish_post = array();
// 取得したデータから「publish_future_post」の情報を配列に代入
foreach( $option_cron as $key => $value ){
if(!empty($value['publish_future_post'])){
foreach( $value as $k => $hook ){
foreach( $hook as $md5 => $args ){
$option_publish_post[$key] = array(
'hook' => $hook,
'post_id' => $args['args'][0],
);
}
}
}
}
// 現在の時間と比較してcronが作動するはずの時間に実行
$now = date_i18n("U");
foreach( $option_publish_post as $publish_time => $value ){
if( $now >= $publish_time ){
$this_post = get_post($value['post_id']);
if( $this_post->post_status == 'future' ){
$post_arg = array(
'ID' => $value['post_id'],
'post_status' => 'publish'
);
// 記事の情報更新
wp_update_post($post_arg);
// cronのスケジュールから削除
wp_unschedule_event($publish_time, $value['hook']);
}
}
}
}
add_action('init', 'my_cron_future_post');
とても無理矢理感漂っています。
ちゃんと出来る人だったこんなことしないんだろうなー。勉強不足で泣けてきますね。
なにはともあれ、とりあえず動きました。めでたしめでたし。
それはそうと、ErgoDoxから戻れないと確信してしまったので、
1ヶ月の間に2台目を購入する暴挙に出ました。お疲れ様でした。