File: /var/www/dinamo-shop/wp-content/plugins/dinamo-plugin/algolia/transfer_players.php
<?php
/*
 * File containing functions for transfering Players data to Algolia
 */
 function algolia_add_player( $term_id, $tt_id ) {
   $client = algolia_connect();
   $index = $client->initIndex( algolia_setup_index_name( "webshop_players" ) );
   $term = get_term( $term_id, 'dinamo_players' );
   $category = get_term( $term, 'dinamo_players' )->parent;
   $category = get_term_by( 'id', $category, 'dinamo_players' )->name;
   $name     = $term->name;
   $number   = get_field( 'player_number', 'dinamo_players_' . $term->term_id );
   $image    = wp_get_attachment_url( get_field( 'player_image', 'dinamo_players_' . $term->term_id ) );
   $result_item = [
     'objectID' => $term->term_id,
     'name'     => $term->name,
     'position' => $category,
     'number'   => $number,
     'image'    => $image,
   ];
   $results = array($result_item);
   $index->addObjects(
     (object)$results
   );
 }
// Add term to Algolia when created in WP
 add_action( 'created_dinamo_players', 'algolia_add_player', 10, 3 );
 // Update term in Algolia when edited in WP
 add_action( 'edited_dinamo_players', 'algolia_add_player', 10, 3 );
// Add all players to Algolia
 function algolia_add_players() {
   try {
     $client = algolia_connect();
     $index = $client->initIndex( algolia_setup_index_name( "webshop_players" ) );
     $terms = get_terms(array(
       'taxonomy'   => 'dinamo_players',
       'hide_empty' => false,
     ));
     $results = [];
     if( $terms ) :
       foreach( $terms as $term ) :
         $category = get_term( $term, 'dinamo_players' )->parent;
         $category = get_term_by( 'id', $category, 'dinamo_players' )->name;
         $name     = $term->name;
         $number   = get_field( 'player_number', 'dinamo_players_' . $term->term_id );
         $image    = wp_get_attachment_url( get_field( 'player_image', 'dinamo_players_' . $term->term_id ) );
         $result_item = array(
           'objectID' => $term->term_id,
           'name'     => $term->name,
           'position' => $category,
           'number'   => $number,
           'image'    => $image,
         );
         $results = array_merge( $results, [$result_item] );
       endforeach;
     endif;
     $index->addObjects(
       (object)$results
     );
     return true;
   } catch ( Exception $e ) {
     return false;
   }
 }
 add_filter('acf/prepare_field/name=algolia_transfer_players', function( $field ) {
   if( is_admin() ) :
     ?>
     <div class="acf-field">
       <button id="transfer_players">Transfer players</button>
     </div>
     <script>
      jQuery("#transfer_players").click(function(e){
        e.preventDefault();
        jQuery(e.currentTarget).html("Transfering.... please wait...");
        jQuery(e.currentTarget).attr('disabled', 'disabled');
        jQuery.ajax({
            url: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
            type:"POST",
            data: {
                action: 'transfer_players_ajax'
            }
        }).done(function(data){
            jQuery(e.currentTarget).html("Transfer players");
            jQuery(e.currentTarget).removeAttr('disabled');
            if(data.success){
                alert("Transfer of players was successfull");
            }else{
                alert("An error happened during the transfer of players. Please try again.");
            }
        });
      });
     </script>
     <?php
   endif;
   return "";
 });
add_action( 'wp_ajax_transfer_players_ajax', 'transfer_players_ajax' );
function transfer_players_ajax() {
  header('Content-Type: application/json');
    if( ! is_admin() ) {
      json_encode(array(
        'success' => false
      ));
      wp_die();
    }
    $result = algolia_add_players();
    echo json_encode(array(
        'success' => $result
    ));
    wp_die();
}
// Delete Player from Algolia table when deleted in Wordpress
add_action( 'delete_dinamo_players', function( $term, $tt_id ) {
  $client = algolia_connect();
  $index = $client->initIndex( algolia_setup_index_name( "webshop_players" ) );
  $index->deleteObject( $term );
}, 10, 3 );