Итак, я интегрирую XML API в WordPress. Я получаю имя и идентификатор сообщения из API и создаю пользовательское сообщение. Но когда я использую функцию wp_insert_post, она создает бесконечное число l oop, поэтому я получаю бесконечное количество пользовательских сообщений с одинаковым заголовком. Вот мой код (было бы очень полезно, если бы кто-то мог помочь.)
function register_custom_post(){
register_post_type( 'hostel', array(
'label' => 'Hotel',
'public' => true,
'capability_type' => 'post',
));
}
add_action('init','register_custom_post');
add_action( 'wp_ajax_nopriv_get_hotels_from_xml', 'get_hotels_from_xml' );
add_action( 'wp_ajax_get_hotels_from_xml', 'get_hotels_from_xml' );
function get_hotels_from_xml(){
$hotels = [];
$xml = simplexml_load_file('C:\Users\USER\Documents\API\HotelDetailXML\53032.xml');
$json = json_encode($xml);
$results = json_decode($json);
if(!is_array($results)||empty($results)){
false;
}
$hotel_slug = sanitize_title($results->Name.'-'.$results->Id);
$gallerypost = array(
'post_name' => $hotel_slug,
'post_title' => $hotel_slug,
'post_type' => 'hostel',
'post_status' => 'publish');
remove_action( 'save_post', 'get_hotels_from_xml' );
wp_insert_post( $gallerypost );
add_action( 'save_post', 'get_hotels_from_xml' );
wp_remote_post( admin_url('admin-ajax.php?action=get_hotels_from_xml'), [
'blocking' => false,
'sslverify' => false // we are sending this to ourselves, so trust it.
]);
}