web-dev-qa-db-fra.com

Obtenir des valeurs de poste spécifiques à un autre div ou modal

J'essayais donc de boucler tout le message de wordpress avec the_excerpt. Ensuite, je me suis retrouvé confronté à la difficulté d'obtenir et de transmettre les données d'un message en cliquant sur un lien ou un bouton pour afficher the_content () sur un div modal.

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<div class="post">
    <h2><?php the_title(); ?></h2>

    <p><?php the_time('F jS, Y'); ?> by <?php the_author(); ?></p>
    <div class="blog-content">
        <?php the_excerpt(); ?>
    </div>
 </div> 
 <?php endwhile; else : ?>
 <p><?php esc_html_e( 'Sorry, no posts matched your criteria.' ); ?></p>

voici à quoi ressemble mon modal ..

<div id="myModal" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Modal Header</h4>
      </div>
      <div class="modal-body">

      <!-- the_content() in here-->

      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>

  </div>
</div>

pas sûr que ça va marcher

<button class="btn btn-primary tag_cnt" onclick="showModal('data')" type="button" value="<?php $post->post_content;?>"></button>

puis utilisez une fonction comme celle-ci

function showModal(data)
{

   $("#myModal .modal-body").html(data)
   $("#myModal").modal();
}

mais comment puis-je transférer plusieurs valeurs comme the_content et the_title?

1
Jeff Edward

Vous pouvez le faire de différentes manières:

Json Encode

C’est ma façon préférée de transmettre des données/paramètres/etc. au serveur frontal.

PHP

$obj=array(
    'content' => $post->post_content,
    'title' => esc_html( get_the_title() )
);

Maintenant, la sortie du bouton sera comme ceci:

HTML

<button class='btn btn-primary tag_cnt get_button_more_info' type='button' value='<?=json_encode($obj)?>'></button>

Javascript

(function($) {

  $('.get_button_more_info').on('click',function() {
    var obj = $(this).val();
    obj = JSON.parse(obj);

    $("#myModal .modal-body").html(obj.content)
    $("#myModal .modal-title").html(obj.title)
    $("#myModal").modal();
  });

})( jQuery );
1
Drupalizeme