Всем привет!
Есть медиатека фильмов на
wordpress, данные для которой я получаю по
Rest API и записываю в посты соответственно на каждый из фильмов.
Настроил
CRON задачу (при помощи wordpress) для периодического обновления контента, но столкнулся с проблемой корректного стягивания контента: при каждой попытке активации, создаётся выборочный пост из запроса, причём без постера, т.е. функция
set_post_thumbnail не отрабатывает..
Но, если отключаю хук с активацией крона
cron_activation и вместо хука
query_films прописываю
add_action('admin_init', 'function_query_films');
, то непосредственно принудительное создание постов отрабатывает корректно.
В чем может быть причина и как поправить?
Код
add_action( 'admin_head', 'cron_activation' );
function cron_activation() {
if( ! wp_next_scheduled( 'query_films' ) ) {
wp_schedule_single_event( time(), 'query_films' );
}
}
//add_action('admin_init', 'function_query_films');
add_action( 'query_films','function_query_films' );
function function_query_films(){
$term_id = 500; // get_queried_object()->term_id;
$term_childs = get_term_children( $term_id, 'category' );
foreach ( $term_childs as $child ) {
$company_id = get_term_meta( $child, 'company_id', true );
if($company_id) {
$url = URL_PATH .'films?companyId='. $company_id;
$options = array('http' => array(
'method' => 'GET',
'header' => 'Authorization: Bearer '.BEARER_TOKEN
));
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
if($response) {
$json_array = json_decode($response, true);
if(is_array($json_array)) {
foreach($json_array as $json_value) {
$post_data = array(
'post_title' => sanitize_text_field( $name ),
'post_content' => $content,
'post_category' => array(5),
'post_status' => 'publish',
'post_type' => 'post',
'post_author' => 1
);
$post_id = wp_insert_post( $post_data );
$img_id = media_sideload_image( $json_value["img_url"], $post_id);
$thumbnail = set_post_thumbnail( $post_id, $img_id );
}
}
}
}
}
}