tag落地页--通过ajax-post请求数据

  • 查询所有tag及其对应跳转链接
$tags = get_tags(array('get'=>'all'));
$output .= '
    '; if($tags) { foreach ($tags as $tag): $output .= '
  • '. $tag->name .'
  • '; endforeach; } else { _e('No tags created.', 'text-domain'); } $output .= '
'; echo $output;
  • 交互tag查询


    image

    场景如下,通过页面中选中一个或多个tag进行交互查询选择tag下的文章,涉及到post请求

    1、将post请求发送给根目录下的admin-ajax.php
    2、在主题functions.php中通过钩子函数,处理传来的参数,返回处理结果

  • 注意js中post请求的action:tagQuery,为回调钩子函数的tagQuery函数名称

// javascript
 
 $(document).ready(function($){
      var data={
        action:'tagQuery',
        tag: param, // 要查询的tag数组
        page: paged
      }

      $.post("", data, function(response) {
        if(!response){
          return;
        }else{
          $("#tagRes").html(response);
        }
      });
    });
// php functions.php
function tagQuery(){
    $tagArr = $_POST['tag'];
    $page = $_POST['page'];

    // 动态分页查询
    $quyStr = $tagArr[0];
    for($i = 1 ; $i < count($tagArr) ; $i++){
        $quyStr.='+'.$tagArr[$i];   // 多个tag查询,为+拼接的tag字符串
    }
        $tagQur = array(
            'tag' => $quyStr,
            'orderby' => 'modified',
            'order' => 'DESC',
            'posts_per_page'=> 12,
            'paged'=> $page
        );
  
    $wp_query = new WP_Query($tagQur);
    $max_page = $wp_query->max_num_pages; // 最大页数

    query_posts( $tagQur );

    while ( have_posts() ) : the_post();
        $perLink = get_the_permalink();
        echo "";
        echo post_item_show(1);
        echo "";
    endwhile;
    }

        pageSet($page,$max_page);
    }
    wp_reset_query();
    die();

}
add_action('wp_ajax_tagQuery', 'tagQuery');
add_action('wp_ajax_nopriv_tagQuery', 'tagQuery');

参考文章:

  • 如何在WordPress中使用Ajax
  • https://awhitepixel.com/blog/wordpress-use-ajax/
  • query_posts
  • WordPress 文章查询用法大全

你可能感兴趣的:(tag落地页--通过ajax-post请求数据)