添加AJAX Load More以显示来自meta box的图像

时间:2015-09-04 作者:umanga shrestha

我正在使用metabox\'s 高级文件上载程序以上载图像。

<?php  $images = rwmb_meta( \'tj_file_advanced\', \'type=image&size=YOURSIZE\');



    foreach ( $images as $image ) { ?>

        <div class="col-md-4">
            <div class="boxe">
                <?php echo "<img src=\'{$image[\'full_url\']}\'/>";     ?>
            </div>
        </div>

<?php } ?> 

<div class="loadmore" onclick="loadMore()"></div>
目前,我只上传了3张图片,所以它只显示了3张图片。我想上传更多图片。它应该只在开始时显示3个图像,在我单击“加载更多”后,它应该显示另外3个图像并显示。

2 个回复
SO网友:mlimon

这可以按照在WordPress中使用Ajax的常规方法来完成。

https://codex.wordpress.org/AJAX_in_Plugins

首先注册一个脚本文件,并创建一个AJAX调用。

wp_enqueue_script( \'meta-ajaxscript\', get_stylesheet_directory_uri() . \'/js/ajax-init.js\', array( \'jquery\' ), \'\', true );
wp_localize_script( \'meta-ajaxscript\', \'ajaxMeta\', array(
    \'ajaxurl\' => admin_url( \'admin-ajax.php\' )
));
其次,按类或ID用父元素包装元数据

<div id="metaWrapper">

    <?php  
    $images = rwmb_meta( \'tj_file_advanced\', \'type=image&size=YOURSIZE\'); 
    $ppp = 3;
    foreach (array_slice($images, 0, $ppp) as $image) { ?>
    <div class="col-md-4">
        <div class="boxe">
            <?php echo "<img src=\'{$image[\'full_url\']}\'/>"; ?>
        </div>
    </div>
    <?php } ?>

</div>

<div class="loadmore"></div>
第三,在ajax init中编写一些ajax调用脚本。js。

$( ".loadmore" ).on( "click", function(e) {
  e.preventDefault();

  var $container = $(\'#metaWrapper\'),
      ppp = 3,
      number = $container.find( \'> .col-md-4\').length,
      page = number / ppp;

  $.ajax({
    url: ajaxMeta.ajaxurl,
    type: \'post\',
    data: {
      \'page\': page,
      \'ppp\': ppp,
       action: \'meta_fetch\'
    },
    success: function( response ) {
      if(response == "")
          {
            // no content was found
            $(\'.loadmore\').hide();
          }
          else
          {
            console.log(response);
            $container.append( response );
          }
      }
  });

  return false;
});
现在设置一个PHP函数来处理AJAX请求。

add_action( \'wp_ajax_nopriv_meta_fetch\', \'wpex_metadata_fetch\' );
add_action( \'wp_ajax_meta_fetch\', \'wpex_metadata_fetch\' );

function wpex_metadata_fetch() {

  $images = rwmb_meta( \'tj_file_advanced\', \'type=image&size=YOURSIZE\');

  $page = (int) $_POST[\'page\'];
  $ppp  = (int) $_POST[\'ppp\'];

  foreach (array_slice($images, $page*$ppp, $ppp) as $image) { ?>
  <div class="col-md-4">
      <div class="boxe">
          <?php echo "<img src=\'{$image[\'full_url\']}\'/>"; ?>
      </div>
  </div>
  <?php
  } 

  die();

}
希望它是有意义的和快乐的编码!

SO网友:Maikal

好啊所以你的loadMore() 应该这样做:

function loadMore() {
    var showing = $(\'#id\').find( \'> .col-md-4\').length;
    $.ajax(
        // making ajax call to get more images passing variable showing
        success: function( data ) {
        $(\'#id\').append( data );
        }
    );
}
您的php(ajax)脚本应该返回如下内容:

$images = rwmb_meta( \'tj_file_advanced\', \'type=image&size=YOURSIZE\');
$count = count( $images );
$offset = (int) $_POST[\'showing\'];
for( $i = $offset; $i <= $count; $i++ ) {
    echo \'<div class="col-md-4">
            <div class="boxe">
                <img src="\' . $images[$i][\'full_url\']. \'" />
            </div>
        </div>\';
}
die();
请注意,您应该将所有col-md-4 在里面#id

相关推荐

尝试在WordPress中实现AJAX注释,遇到WP错误

我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i