J'ai créé une fonction AJAX pour afficher les types de messages personnalisés lorsque l'utilisateur clique sur le bouton correspondant. La fonction fonctionne et a peuplé la page mais retourne des valeurs/éléments vides. J'utilise actuellement ACF et tente de stocker les données dans les variables à utiliser dans mes fonctions.php, mais malheureusement sans succès. Des pensées?Les résultats Ajax POST affichent des valeurs vides - ACF
script initial Fonction Enqueue
function synchrony_theme_scripts() {
wp_enqueue_script('main-js', get_template_directory_uri() . '/js/script.js', array('jquery'), '', true);
wp_localize_script('main-js', 'team_ajax', array(
'ajaxurl' => admin_url('admin-ajax.php')
));
}
Jquery AJAX Fonction
var count = 0;
function load_more_team(count) {
var button = $('#more_posts'),
count = count + 12,
data = {
'action': 'ajax_more_team',
'offset': count
}
$.ajax({
url: team_ajax.ajaxurl,
data: data,
type: 'POST',
dataType: 'html',
success: function(data){
if(data.length){
$("#ajax_posts").append(data);
button.attr("disabled",false);
} else{
button.attr("disabled",true);
}
}
});
return false;
}
$('#more_posts').click(function() {
$("#more_posts").attr("disabled",true);
load_more_team();
});
AJAX Handler dans functions.php
function ajax_more_team($offset) {
$offset = $offset + 12;
header("Content-Type: text/html");
$args = array(
'post_type' => 'team',
'posts_per_page' => 12,
'offset' => $offset
);
$the_query = new WP_Query($args);
$id = get_the_id();
$headshot = the_field('employee_headshot');
$name = the_field('employee_name');
$title = the_field('employee_title');
$company = the_field('employee_company');
$url = get_template_directory_uri();
$out = '';
if ($the_query -> have_posts()) : while ($the_query -> have_posts()) : $the_query -> the_post();
$id = get_the_id();
$name = the_field('employee_name');
$out .= '<div class="col-6 col-md-4 col-lg-3 col-xl-2 mb-4">
<div class="team-member">
<a href="#" data-toggle="modal" data-target="#'.$id.'">
<img class="img-fluid" src="'.$headshot.'" alt="'.$headshot.'">
</a>
<div class="team-info">
<h6>'.$name.'</h6>
</div>
<a href="" data-toggle="modal" data-target="#myModal">
<div class="modal-icon">
<img class="img-fluid" src="'.$url.'/imgs/modal-icon.svg">
</div>
</a>
</div>
<!-- Modal -->
<div class="modal fade" id="'.$id.'" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="team-close-btn">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<img class="img-fluid" src="'.$headshot.'" alt="Alice George">
<div class="team-info">
<h6>'.$name.'</h6>
<p><strong>Title:<br></strong>'.$title.'</p>
<p><strong>Company:<br></strong>'.$company.'</p>
</div>
</div>
</div>
</div>
</div>
</div>';
endwhile;
endif;
wp_reset_postdata();
die($out);
}
add_action('wp_ajax_nopriv_ajax_more_team', 'ajax_more_team');
add_action('wp_ajax_ajax_more_team', 'ajax_more_team');
?>
J'ai ajouté les variables $ id et $ name dans la boucle pour tester si les données sont extraites et remplies, mais ne sont pas incluses dans les zones souhaitées.
Je vois, j'ai regardé plus dans votre réponse sur 'get_field()'. Vu que je pouvais passer et faux paramètre pour obtenir l'ID poste actuel. J'ai aussi réalisé que j'avais la variable en dehors de la boucle. Une fois que j'ai placé les variables dans ma boucle en utilisant la fonction appropriée, il a peuplé comme souhaité. – WeebleWobb
Lisez aussi quelques doc utiles: https://www.advancedcustomfields.com/resources/get_field/ et https://www.advancedcustomfields.com/resources/the_field/. Merci de m'avoir indiqué la bonne direction. – WeebleWobb