1. 首页
  2. WordPress 函数手册

get_boundary_post()

get_boundary_post( bool $in_same_term = false, array|string $excluded_terms = , bool $start = true, string $taxonomy = ‘category’ )

检索边界柱。
Retrieves the boundary post.

目录锚点:#说明#参数#返回#源码


说明(Description)

边界是在$in-same_terms或$excluded_terms指定的约束范围内,按发布日期发布的第一篇或最后一篇文章。


参数(Parameters)

参数 类型 必填 说明
$in_same_term (bool) 可选 返回的post是否应该使用相同的分类术语。
$excluded_terms (array | string) 可选 排除的术语ID的数组或逗号分隔列表。
$start (bool) 可选 是检索第一篇还是最后一篇文章。默认为真
$taxonomy (string) 可选 分类法,如果$in_相同的术语是真的。

返回(Return)

(null|array)如果成功,则包含boundary post对象的数组,否则为null。


源码(Source)

/**
 * Retrieve boundary post.
 *
 * Boundary being either the first or last post by publish date within the constraints specified
 * by $in_same_term or $excluded_terms.
 *
 * @since 2.8.0
 *
 * @param bool         $in_same_term   Optional. Whether returned post should be in a same taxonomy term.
 * @param array|string $excluded_terms Optional. Array or comma-separated list of excluded term IDs.
 * @param bool         $start          Optional. Whether to retrieve first or last post.
 * @param string       $taxonomy       Optional. Taxonomy, if $in_same_term is true. Default 'category'.
 * @return null|array Array containing the boundary post object if successful, null otherwise.
 */
function get_boundary_post( $in_same_term = false, $excluded_terms = '', $start = true, $taxonomy = 'category' ) {
	$post = get_post();
	if ( ! $post || ! is_single() || is_attachment() || ! taxonomy_exists( $taxonomy ) )
		return null;

	$query_args = array(
		'posts_per_page' => 1,
		'order' => $start ? 'ASC' : 'DESC',
		'update_post_term_cache' => false,
		'update_post_meta_cache' => false
	);

	$term_array = array();

	if ( ! is_array( $excluded_terms ) ) {
		if ( ! empty( $excluded_terms ) )
			$excluded_terms = explode( ',', $excluded_terms );
		else
			$excluded_terms = array();
	}

	if ( $in_same_term || ! empty( $excluded_terms ) ) {
		if ( $in_same_term )
			$term_array = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) );

		if ( ! empty( $excluded_terms ) ) {
			$excluded_terms = array_map( 'intval', $excluded_terms );
			$excluded_terms = array_diff( $excluded_terms, $term_array );

			$inverse_terms = array();
			foreach ( $excluded_terms as $excluded_term )
				$inverse_terms[] = $excluded_term * -1;
			$excluded_terms = $inverse_terms;
		}

		$query_args[ 'tax_query' ] = array( array(
			'taxonomy' => $taxonomy,
			'terms' => array_merge( $term_array, $excluded_terms )
		) );
	}

	return get_posts( $query_args );
}
更新版本 源码位置 使用 被使用
2.8.0 wp-includes/link-template.php:2022 1 function 6

get_boundary_post() 为WP2原创文章,链接:https://www.wp2.cn/functions/get_boundary_post/

发表评论

您的电子邮箱地址不会被公开。