1
我必須使用techcrunch wp-async-task在我的wordpress插件的後臺運行同步任務。wp-async-task不啓動run_action方法
所以測試,在主文件的底部我:
//top of the php file
require_once(dirname(__FILE__) . '/lib/WP_Async_Task.php');
require_once(dirname(__FILE__) . '/class/my_api_status.class.php');
define('API_URL', '...');
/* ... */
// At the bottom of the file
function my_api_status($api_url)
{
sleep(5);
$r = wp_safe_remote_get($api_url);
if (!is_wp_error($r)) {
$body = json_decode(wp_remote_retrieve_body($r));
if (isset($body->success)) {
return;
}
}
}
add_action('wp_async_api_status', 'my_api_status');
function my_init_api_status()
{
new ApiStatusTask();
do_action('api_status', constant('API_URL'));
}
add_action('plugins_loaded', 'my_init_api_status');
和API狀態任務類
class ApiStatusTask extends WP_Async_Task {
protected $action = 'api_status';
/**
* Prepare data for the asynchronous request
* @throws Exception If for any reason the request should not happen
* @param array $data An array of data sent to the hook
* @return array
*/
protected function prepare_data($data) {
return array(
'api_url' => $data[0]
);
}
/**
* Run the async task action
*/
protected function run_action() {
if(isset($_POST['api_url'])){
do_action("wp_async_$this->action", $_POST['api_url']);
}
}
}
功能prepare_data
正確的launch
,之後launch_on_shutdown
被稱爲也正確調用,最後wp_remote_post
在launch_on_shutdown
的末尾被調用admin-post.php
。 但函數run_action
永遠不會被調用...所以主文件中的my_api_status
。
什麼可能出錯?
嗨托馬斯,感謝您張貼這個!我試圖在我的Wordpress v4.7.5上運行這個類似的設置。我已經在我的主題functions.php文件中設置了擴展WP_Async_Task類的自定義類。但是,即使在WP_Async_Task類的'launch_on_shutdown'方法中設置sslverify,這也不起作用。 – Qwerty
你知道Techcrunch插件和這種方法是否可以在Wordpress v4.7.5中使用。一直在努力讓這個插件使用鉤子,甚至是wp_async_save_post鉤子。 – Qwerty