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 );