私は外部URLから毎日データをインポートする必要があるサイトを用意していますので、これを処理するプラグインを作成しました。これまでのところとても良いですが、問題は私のcronイベントがうまくいかないことです。イベントをテストするためにCrontrolプラグインをインストールしましたが、何も起こりません。フック名が一覧に表示されますが、[今すぐ実行]をクリックすると、cronイベントは正常に実行されたが、データはインポートされないというメッセージが表示されます。カスタムWordpressプラグインでCronイベントが実行されない
私は多くのrecoursesonlineを検索しましたが、何とか他の場所に投稿されたすべてのソリューションが私にとってうまくいかないようです。私はどこかのステップを欠いているに違いない。
プラグインは、インポート・データと呼ばれ、wp-content/plugins/import-data/
に私は輸入data.php持っている:私は知っている
<?php
/**
* Plugin Name: Import data
* Plugin URI:
* Description: Import data
* Version: 1.0.0
* Author:
* Author URI:
* License: GPL2
*/
// Block direct acces to file
defined('ABSPATH') or die();
// Include functions
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'functions.php';
// Include class
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'lib/class.import_data.php';
/**
* @desc iterate through all posts and update information
*/
function import_data(){
$wp_query = new WP_Query(
array(
'post_type' => 'post',
'post_status' => 'publish',
)
);
if($wp_query->have_posts()){
while($wp_query->have_posts()){
$wp_query->the_post();
$post_id = $wp_query->post->ID;
$external_id = get_field(trim(get_option('acfname_external_id')));
// Execute plugin
Import_Data::getInstance()->fetchDetails($external_id, $post_id);
}
wp_reset_postdata();
}
}
/**
* Set cron
*/
function my_event(){
if(!wp_next_scheduled('import_data')){
wp_schedule_event(time(), 'daily', 'import_data');
}
}
add_action('wp', 'my_event');
function unset_event(){
wp_clear_scheduled_hook('import_data');
}
register_deactivation_hook(__FILE__, 'unset_event');
をiが前に出力をテストしたので、私はそれを手動で実行したときに動作しますfetchDetails()
方法(I import_data()
にショートコードを追加してデモページで使用しました)、データはインポートされますが、上記のcron設定はインポートされません。
functions.phpでは管理ページの設定のみです。
これはWordpressのプラグイン開発の世界で私の最初の一歩です。重要なフックやフィルタ(または何か)が欠けているとイメージできるようになりましたが、それが見つからないだけです。おそらくいくらかの初期化?
残念ながら同じ私が持っていたように結果:何も起こりません。あなたが言いました(WP Crontrol)というプラグインがインストールされていて、そこにイベントが表示されていますが、[今すぐ実行]をクリックすると何もインポートされません。 import-data.phpの最後に 'add_shortcode( 'ip_test_output'、 'ip_do_import_data');を追加し、テストページに行くとデータをインポートするテストページに' ['ip_test_output]を追加します。 – Maurice
WordPressがあなたのcron関数を実行していることを確認してから、cronイベントがスケジュールされるようにプラグインを無効にして再度アクティブにする必要があります。 wp cron環境を手動で起動するには、http://yourdomain.com/wp-cron.php?doing_wp_cronを参照してください。スケジュールされているイベントがあれば、それらはアクティブになります。何が失敗するかを確認するには、コードのデバッグを開始する必要があります。 – MrZiggyStardust
上記のプラグインを試しましたが、 'require_once()'とイベントコードをすべて削除し、代わりに単純な 'wp_mail()'呼び出しを追加しました。 WordPress 4.6.1では、イベントが追加され、テスト用の電子メールが届きました。スケジュールされたイベントが 'ip_import_data'であることを確認してください:' import_data' – MrZiggyStardust