获取JS中的帖子数(Wordpress)

时间:2015-06-03 08:25:35

标签: javascript php jquery ajax wordpress

我在WP上有网站。

我正在使用AJAX来展示我的帖子。点击“更多”按钮会出现另外两个帖子。当我显示所有帖子时,我试图隐藏按钮。但出了点问题。

我不明白如何将帖子数量计入JS(这是另一种变体),因为构造var posts_count = "<?php echo $posts_count; ?>不起作用 - 它只提供字符串!

JS

$(function () {

  var posts = 2; //posts shown
  var posts_offset = 2;



  $("#load-post").click(function (e) {
    e.preventDefault();


    $.ajax({
      type: "GET",
      url: "/wp-admin/admin-ajax.php",
      data: ({
        action: 'loadMore',
        posts_offset: posts_offset
      }),
      success: function (data) {
        $('.news #content').append(data);
        posts_offset += 2;

      }
    });


  });


});

PHP

function loadMore() {



    $posts_count = wp_count_posts()->publish; 

    $posts_offset = $_GET['posts_offset'];


    // get your $_GET variables sorted out

    // setup your query to get what you want
    query_posts( array( 'posts_per_page' => 2, 'offset'=> $posts_offset ) );

    // initialsise your output
    $output = '';

    // the Loop
    while (have_posts()) : the_post();

         ?><div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 news-item">
              <div class="news-date">
                <?php the_time($format = "j F Y") ?>
              </div>
              <div>
                <h3><?php the_title() ?></h3>
                <p><?php the_content() ?></p>
              </div>
            </div><?php

    endwhile;

  if ($posts_count - ($posts_offset + 2) <= 0) { ?>
      <script>$("#load-more").hide();</script>
    <?php }


    // Reset Query
    wp_reset_query();

    die($output);

}

此代码有效,但隐藏按钮的部分不起作用

2 个答案:

答案 0 :(得分:1)

您不是echo脚本部分。

if ($posts_count - ($posts_offset + 2) <= 0) {
      echo '<script>$("#load-more").hide();</script>';
}

为什么你不将javascript部分与php分开?如果你从ajax处理脚本逻辑会更优雅。在php中,如果条件不满足,则发回一些响应,然后从javascript处理DOM操作。

答案 1 :(得分:1)

按如下方式更改您的代码:

PHP

中的

<script>function hideLoadMore(){$("#load-more").hide();}</script>

并在JS

success: function (data) {
    $('.news #content').append(data);
    posts_offset += 2;
    if(hideLoadMore) { 
        hideLoadMore(); 
    }
  }