web-dev-qa-db-ja.com

特定の投稿値を他のdivまたはmodalに取得する

だから私はthe_excerptでwordpressからのすべての投稿をループしようとしていました。それから私はモーダルdivにthe_content()を表示するためにリンクまたはボタンをクリックすることによって単一の投稿からデータを取得して渡す方法にこだわりました。

<?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>

これが私のモーダルの様子です。

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

これがうまくいくかどうかわからない

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

それからこのような関数を使う

function showModal(data)
{

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

しかし、どのように私はthe_contentとthe_titleのような複数の値を転送するのですか?

1
Jeff Edward

あなたはさまざまな方法でそれを行うことができます。

Jsonエンコード

これが私のお気に入りのデータ/設定などをフロントエンドに渡す方法です。

PHP

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

ボタンの出力は次のようになります。

HTML

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

ジャバスクリプト

(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