使用AJAX的Wordpress动态帖子

时间:2015-06-18 00:29:53

标签: javascript php jquery ajax wordpress

我想使用在内部UL中单击的项目的帖子ID来加载此代码。怎么办呢?

目前创建一个包含指定类别的侧边菜单。

之后,它会在其中创建一个ul子菜单,其中每个li都是该类别的帖子。类别中的帖子也使用ajax插入到指定的div中。

我需要div和side菜单中显示的帖子在点击时加载到div中。

目前我正在使用cat id创建菜单并插入div。我需要在子菜单中使用post id。

这很难解释。

的index.php

<?php

  $args = array(
    'include' => '4,5,7,8'
  );
  $categories = get_categories($args); 

?>

<ul id="category-menu" class="nav nav-list">

  <?php

   foreach ( $categories as $cat ) { ?>

     <?php $show = 'cat=' . $cat->term_id; ?>
     <li id="cat-<?php echo $cat->term_id; ?>">
       <a class="<?php echo $cat->slug; ?> ajax tree-toggle" onclick="cat_ajax_get('<?php echo $cat->term_id; ?>');" href="#">
         <?php echo $cat->name; ?>
       </a>

       <ul class="nav nav-list tree" style="display: none">
         <?php query_posts($show); ?>
         <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
         <?php $post_id = $wp_query->post->ID; echo $post_id; ?>

         <li>
           <a class="ajax" onclick="cat_ajax_get('<?php echo $post_id ?>');" href="#"><?php the_title(); ?></a>
         </li>
         <?php endwhile; endif; ?>

       </ul>
     </li>
   

的header.php

<script>

  function cat_ajax_get(catID) {
    jQuery("a.ajax").removeClass("current");
    jQuery("a.ajax").addClass("current"); //adds class current to the category menu item being displayed so you can style it with css
    var ajaxurl = '<?php echo admin_url( 'admin-ajax.php' ); //must echo it ?';
    jQuery.ajax({
      type: 'POST',
      url: ajaxurl,
      data: {"action": "load-filter", cat: catID },
      success: function(response) {
        jQuery("#category-post-content").html(response);
        return false;
      }
    });
  }

</script>

的functions.php

add_action( 'wp_ajax_nopriv_load-filter', 'prefix_load_cat_posts' );
add_action( 'wp_ajax_load-filter', 'prefix_load_cat_posts' );

function prefix_load_cat_posts () {

  $cat_id = $_POST[ 'cat' ];   $args = array (
    'cat' => $cat_id,
    'posts_per_page' => 10,
    'order' => 'DESC'
  );

  $posts = get_posts( $args );
  ob_start ();

  foreach ( $posts as $post ) {

    setup_postdata( $post ); ?>

    <div id="post-<?php echo $post->ID; ?> <?php post_class(); ?>">
      <h1 class="post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
      <div id="post-content">
        <?php the_content(); ?>
      </div>
    </div>

    <?php
  }

  wp_reset_postdata();
  $response = ob_get_contents();   ob_end_clean();
  echo $response;
  die(1);
}

0 个答案:

没有答案