action
が存在しない為、実行されないだけです。
ご返信ありがとうございます。
add_action(‘tweetcron’, ‘tweetPost’);
add_action(‘wp’, ‘my_activation’);
とあるようですが、これではなぜダメなのでしょうか?
宜しくお願いいたします。
tweetPost
のアクションが無いからです。
関数リファレンス/wp schedule event
//ツイートする処理
$code = $tmhOAuth->request(
'POST',
'https://api.twitter.com/1.1/statuses/update.json',
$params,
true,
true
);
}
add_action( 'tweetPost', 'tweetPost' );
-
この返信は6年、 12ヶ月前にmanboが編集しました。
-
この返信は6年、 12ヶ月前にmanboが編集しました。
そのようにadd_action( 'tweetPost', 'tweetPost' );
を追加してもダメな様子です。。
ちなみに下記のように「hourly」で「毎時間」にすると、ちゃんと作動するのです。
require_once dirname(__FILE__) . '/tmhOAuth-master/tmhOAuth.php';
function tweetPost(){
//トークンなどの設定
$tmhOAuth = new tmhOAuth(array(
"consumer_key" => 'xxxxx',
"consumer_secret" => 'xxxxx',
"user_token" => 'xxxxx',
"user_secret" => 'xxxxx',
'curl_ssl_verifypeer' => false
));
//ツイートする記事の取得
$post = get_posts(array(
'numberposts' => '1',
'orderby' => 'rand',
'post_type' => 'post',
'meta_key' => 'checkbox_on',
'meta_value' => 'on',
));
//ツイートするテキスト
$params = array(
'status' => mb_strimwidth('投稿しました。'.strip_tags($post[0]->post_title), 0, 116, "...") . ' ' . get_permalink($post[0]->ID)
);
//ツイートする処理
$code = $tmhOAuth->request(
'POST',
'https://api.twitter.com/1.1/statuses/update.json',
$params,
true,
true
);
}
//ここまでは一緒
//ここにadd_action( 'tweetPost', 'tweetPost' );がなくても下記のように「hourly」ならちゃんと「毎時間」実行されるようです
// 毎時間スケジュールを実行する
add_action('tweetcron', 'tweetPost');
function my_activation() {
if ( !wp_next_scheduled( 'tweetcron' ) ) {
wp_schedule_event(time(), 'hourly', 'tweetcron');
}
}
add_action('wp', 'my_activation');
有無関係なく動かないならサイトにアクセスが無いからではないですか?
wp
だとサイトにアクセスしなければスケジュールが追加されないので。
そ、そういうことなのですね…!?
あれ、でも私の一個前の返信に書いたコード(hourlyのやつです)はadd_action('wp', 'my_activation');
ですけれど、私がアクセスせず放っておいても毎時間実行されますよ?(noindexにしているので私以外アクセスすることはないと思います。)
noindexは検索エンジンに「インデックしないでくれ』という指示であってアクセスそのものを防ぐわけではないので、パスワード認証でも設けてない限りクローラー等のアクセスは必ずありますけど。
なるほど、なるほど。
どうもありがとうございます。
ところでそのアクセスというのは、同じIPアドレスだったり、またはキャッシュが残っていたりすると、「アクセスだぞ」とカウントされませんでしょうか?
自分でアクセスして確認してみたいのですが、1分経ってもスケジュールが実行されないので、どういうものなのかな?と思いまして。
meijinochocoさん、こんばんは。
「WP Crontrol」というプラグインで原因の切り分けを行うと良いかと思います。
有効化するとwp-cronに登録されているスケジュール一覧がでてきます。
また「今すぐ実行」ボタンがあるので、まずきちんと動作しているか確認してみてください。
尚、同じIPであればカウントされるかと思います。キャッシュはわかりません。。。
こんばんは、夜分に失礼いたします。
そのようなプラグインがあったのですね!
<?php
/*
Plugin Name: My WP-Cron Test
*/
echo '<pre>'; print_r( _get_cron_array() ); echo '</pre>';
function bl_print_tasks() {
echo '<pre>'; print_r( _get_cron_array() ); echo '</pre>';
}
?>
とやらで出力してみても、どうにもよくわからず困っておりました。。
「今すぐ実行」は本当に助かりますね!
hourlyだから1時間待ってましたよ。笑
早速使わせて頂きます。
ななな、「WP Crontrol」、なんて便利なのでしょう。
これ、functions.phpに書いてあるスケジュールを、こんな便利なインターフェイスから編集できるのですか??う、嘘ですよね?笑
試しに自分で登録した「4時間に1回」:を「朝10時」にセットしてみました。
これで出来たら感謝すぎます。。
それでは、おやすみなさいませ。
meijinochocoさん、おはようございます。
ワードプレスの疑似クーロンを利用する場合だと、下記のような形にすれば毎日13時に実行されるようです。
wp_schedule_event( ceil( time() / 86400 ) * 86400 + ( 13 - get_option( 'gmt_offset' ) ) * 3600, 'daily', 'my_daily_event' );
【参考】
WordPress の疑似cronの実行時間を調整する
【検索キーワード】
wp-cron 疑似cron
ただしあくまで疑似クーロンなので、アクセスがないと実行されないので、それを定時におこなうようであれば、サーバー側のCronで、ちょくせつ該当のphpファイルを実行すると良いようです。
(manboさんから教えてもらったのですが、まだテストできていません。。)
so-taroさん、こんにちは。
本当に助かりました。無事実行されていました。(今起きましたww)
便利なプラグインがあるものですね。
疑似クーロンの方法と参考も、わかりやすく大変感謝です。
manboさんも、何度もお付き合い頂き誠にありがとうございます。
今回はひとまずプラグインでの方法にさせて頂きました。