web-dev-qa-db-ja.com

Cronジョブのワードプレス作成上の問題

私は現在、私はビットコインを交換することができますWordpressのプラグインを作成しようとしています。いくつかのAPI呼び出しから取得した値を確認する必要がある場合は、cronジョブを作成する必要がありますが、cronジョブが正しくアクティブ化されません。

私はまた、問題が私のAPIコードであるかどうかを確かめるためにランダムな「エコー」を試みましたが、問題はワードプレスが私のcronジョブを起動していないことだと思います。

これは私のコードです:

    function my_activation() {
    if (!wp_next_scheduled ( 'my_periodic_event' )) {
    wp_schedule_event(time(), 'thirtysec', 'my_periodic_event');
    }
    add_action('my_periodic_event', 'checkCurrencyValue');
}

    function checkCurrencyValue() {
        global $market, $quantita, $durata, $wpdb, $table_name;
        $table_name = $wpdb->prefix."bittrex_account_info";
        $users = $wpdb->get_results( "SELECT chiave FROM $table_name");
                    // The query will get the complete users login id/login name
        foreach ( $users as $user ) {
        echo $user->chiave;
        }
        $users = $wpdb->get_results( "SELECT chiave FROM $table_name WHERE email = '[email protected]'");
        $wpdb->update( $table_name, array( 'chiave' => $key, 'secret' => $users),array('email'=>'[email protected]'));

        $d = new BittrexxApi ($key, $secret);
        $quantita = $wpdb->get_var("SELECT quantita FROM wp_bittrex_account_info WHERE email = '$mail'");
        $discesaMax = $wpdb->get_var("SELECT discesaMax FROM wp_bittrex_account_info WHERE email = '$mail'");
        $maxValDol = $wpdb->get_var("SELECT maxvaldol FROM wp_bittrex_account_info WHERE email = '$mail'");
        $summ = $d->getMarketSummary("USDT-BTC");
        if($summ<discesaMax){
            //$balance = $d->buyLimit($market, $quantita, $durata);
        }
        else if($summ>maxValDol){
            //$balance = $d->sellLimit($market, $quantita, $durata);
        }       
}

私のレジスタフックは働いています:my_activation()関数は実行されますがcheckCurrencyValue()関数は実行されません。いくつか問題はありますか?

事前にありがとう、フィリッポ

3

これはWordpressのcronを設定するために使用した簡略参照です。これはすべて wp_schedule_event()cron_schedules からのものです。

セットアップCron

// SETUP CRON
add_action('wp', 'myplugin_schedule_cron');
function myplugin_schedule_cron() {
  if ( !wp_next_scheduled( 'myplugin_cron' ) )
    wp_schedule_event(time(), 'daily', 'myplugin_cron');
}

クーロン機能

// the CRON hook for firing function
add_action('myplugin_cron', 'myplugin_cron_function');
#add_action('wp_head', 'myplugin_cron_function'); //test on page load

// the actual function
function myplugin_cron_function() {
    // see if fires via email notification
    wp_mail('[email protected]','Cron Worked', date('r'));
}

カスタムクーロンの時間間隔

wordpressのデフォルトの1時間ごと、1日ごとでは足りない場合は、独自に作成できます。

// CUSTOM TIME INTERVAL
add_filter('cron_schedules', 'myplugin_cron_add_intervals');
function myplugin_cron_add_intervals( $schedules ) {
  $schedules['customTime'] = array(
    'interval' => 30,
    'display' => __('Every 30sec')
  );
  return $schedules;
}

wp_schedule_event()内のdailycustomTimeに置き換える

クロンの表示

プラグインを使ってguiからあなたのcronを見ることもできます: https://wordpress.org/plugins/search/cron+view/

5
David Sword