oookli
2/26/2016 - 12:58 PM

wordpress json

wordpress json

 function create_product_changes_json() {
    define("PRODUCT_CHANGES_PAGE", "product_changes_json");
    add_rewrite_rule(PRODUCT_CHANGES_PAGE . '/$', 'index.php?' . PRODUCT_CHANGES_PAGE, 'top');
    add_filter('query_vars', function($query_vars){
      $query_vars[] = PRODUCT_CHANGES_PAGE;
      $query_vars[] = "page";
      return $query_vars;
    });
    add_action('parse_request', function($wp){
      if(array_key_exists(PRODUCT_CHANGES_PAGE, $wp->query_vars)){
        $valuesArray = $wp->query_vars;
        wp_reset_query();
        wp_reset_postdata();
        $paged = ($valuesArray["page"]) ? $valuesArray["page"] : 1;
        $product_changes_posts = new WP_Query(array(
          'cat' => 18,
          'order' => 'DESC',
          'posts_per_page' => 1,
          'paged' => $paged
        ));
        if($product_changes_posts->have_posts()) {
          ob_start();
          header("Access-Control-Allow-Origin: *");
          header('Content-Type: application/json');
          ?>{"posts": [<?php
          $count = $product_changes_posts->post_count;
          $i = 1;
          while($product_changes_posts->have_posts()) {
            $product_changes_posts->the_post();
            ?>
              {"title": <?php echo json_encode(get_the_title()); ?>, "content": <?php echo json_encode(apply_filters('the_content', get_the_content())); ?>, "url": <?php echo json_encode(get_permalink()); ?>}<?php if($i != $count): ?>,<?php endif; ?>
            <?php
            $i++;
          }
          ?>],
          "pages": <?php echo $product_changes_posts->max_num_pages ?>
        }<?php
        $result = ob_get_contents();
        ob_end_clean();
        wp_reset_query();
        wp_reset_postdata();
        die($result);
      }
    }
    });
  }