yaverm
@yaverm

Как получить post_id в цикле в плагине?

У меня есть небольшой плагин для обновления полей 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 } ?>
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы