WordPress开发笔记

WordPress文章页面是否为其所属的某个term分类中的第一篇文章的函数

WordPress文章页面是否为其所属的某个term分类中的第一篇文章的函数:

//用在文章页面
//$tax_name---该文章所属分类法
//$term_id---该文章所属term分类(该分类归属$tax_name分类法)
//$post_id---该文章ID
//注意排序(决定性因素),这里是按照时间排序
//函数返回的是布尔值,可以直接用于判断
if ( ! function_exists( 'zzw_first_post_in_term' ) ) :
	function zzw_first_post_in_term($tax_name,$term_id,$post_id) {
	    // 验证当前是否为单篇文章页面且属于分类"tt2"
	    if (!is_single() || !has_term($term_id, $tax_name, $post_id) ) {
	        return false;
	    }

	    // 查询分类"tt2"下按发布时间降序排列的最新文章
	    $args = array(
	        'tax_query' => array(
	            array(
	                'taxonomy' => $tax_name, // 若为自定义分类法需替换名称
	                'field'    => 'term_id',
	                'terms'    => $term_id,
	            )
	        ),
	        'orderby'        => 'date',
	        'order'          => 'ASC',//或者: ASC 升序、DESC 降序
	        'posts_per_page' => 1,
	        'post_status'    => 'publish'
	    );

	    $query = new WP_Query($args);
	    $is_first = false;

	    // 比较当前文章与查询结果
	    if ($query->have_posts()) {
	    	while ($query->have_posts()) {
	    		$query->the_post();
		        if ( get_the_ID() === $post_id ) {
		        	$is_first = true;
		        }
		    }
	    }

	    // 重置查询防止影响后续循环
	    wp_reset_postdata();
	    
	    return $is_first;
	}
endif;

千万注意排序方式!

我们的逻辑很简单,就是按照我们预设的排序来获取这个分类中的1篇文章,然后让这篇文章的ID与当前文章的ID进行对比。