У меня есть небольшой плагин для обновления полей acf в сообщениях. В каждом посте есть много полей, которые нужно обновить полученными данными от API. В приведенном ниже коде я сначала демонстрирую, что с одного api я получаю нужный мне код, а затем с помощью foreach я получаю данные для каждого поста. Теперь мне нужно обновить поля. Я собрал все ключи acf в один массив и хочу использовать switch для обновления полей. Но я столкнулся с проблемой, что я не могу получить post id в плагине. Как правильно это сделать?
add_action('admin_menu', 'cr_api_tools_api');
function cr_api_tools_api() {
add_menu_page( 'CP API Tools', 'CP API', 'manage_options', 'cr-api-tools-plugin', 'cr_api_tools_init');
function cr_api_tools_view() {
wp_register_style('cr-api-tools-view', plugins_url('/view/cr-api-tools-view.css',__FILE__ ), array(), time());
wp_enqueue_style('cr-api-tools-view');
}
add_action( 'admin_init','cr_api_tools_view');
}
function cr_api_tools_init () { ?>
<div class="container">
<form method="post" class="cr-api-tools">
<h1>CP API TOOLS</h1>
<input type="submit" name="enable" class="enable" value="Enable">
</div>
<?php
if( isset( $_POST['enable'] ) ) {
// JOB API
$url='api/url';
$result = file_get_contents( $url );
$result_data = json_decode( $result );
foreach ($result_data as $job) {
$ref_code = $job->RefCode;
$post_title = $job->JobTitle;
$post_id = post_exists( $post_title );
if( !$post_id ){
$data = array(
'post_type' => 'post',
'post_title' => $post_title,
'post_status' => 'publish',
'post_author' => $user_ID,
);
$post_id = wp_insert_post( $data );
}
// Job DATA API
$job_api_url ='api/url' . $ref_code;
$job_api_result = file_get_contents( $job_api_url );
$result_api_data = json_decode( $job_api_result );
$acf_keys = [
'location',
'job_intro',
'job_offer'
];
if(is_array($acf_keys)) {
foreach ($acf_keys as $value) {
switch ($value) {
case 'location':
update_field( $value, $job->Region, $postID );
break;
case 'job_intro':
update_field( $value, $job->JobTitle, $postID );
break;
case 'job_offer':
update_field( $value, $job->Description, $postID );
break;
default:
break;
}
}
}
}
}
?>
</form>
</div>
<?php } ?>