2017-07-18 1 views
0

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">&times;</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.

Répondre

0

L'utilisation the_field() est comme écrire echo $field il est seulement utile pour afficher la ligne de données: <h6><?php the_field('employee_name') ?></h6>

Pour attribuer ces champs à une variable et les utiliser pour construire une chaîne plus grande, vous aurez envie d'utiliser à la place get_field('employee_name') et vous aurez probablement besoin de passer l'id de l'employé comme deuxième paramètre comme get_field('employee_name', $employee_id=100)

+0

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

+0

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