_find_post_by_old_slug

函数
_find_post_by_old_slug ( $post_type )
Access
Private
参数
  • (string) $post_type The current post type based on the query vars.
    Required:
返回值
  • (int) The Post ID.
相关
  • wp_old_slug_redirect()
定义位置
相关方法
_find_post_by_old_date_truncate_post_slugwp_unique_post_slugget_posts_by_author_sqlfind_posts_div
引入
4.9.3
弃用
-

find_post_by_old_slug: 这个函数是用来根据它的旧lug来查找一个文章: 这个函数被WordPress内部用来查找已经被移到一个新的slug的文章。

找到重定向一个旧slug的文章ID。

function _find_post_by_old_slug( $post_type ) {
	global $wpdb;

	$query = $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta, $wpdb->posts WHERE ID = post_id AND post_type = %s AND meta_key = '_wp_old_slug' AND meta_value = %s", $post_type, get_query_var( 'name' ) );

	// If year, monthnum, or day have been specified, make our query more precise
	// just in case there are multiple identical _wp_old_slug values.
	if ( get_query_var( 'year' ) ) {
		$query .= $wpdb->prepare( ' AND YEAR(post_date) = %d', get_query_var( 'year' ) );
	}
	if ( get_query_var( 'monthnum' ) ) {
		$query .= $wpdb->prepare( ' AND MONTH(post_date) = %d', get_query_var( 'monthnum' ) );
	}
	if ( get_query_var( 'day' ) ) {
		$query .= $wpdb->prepare( ' AND DAYOFMONTH(post_date) = %d', get_query_var( 'day' ) );
	}

	$key          = md5( $query );
	$last_changed = wp_cache_get_last_changed( 'posts' );
	$cache_key    = "find_post_by_old_slug:$key:$last_changed";
	$cache        = wp_cache_get( $cache_key, 'posts' );
	if ( false !== $cache ) {
		$id = $cache;
	} else {
		$id = (int) $wpdb->get_var( $query );
		wp_cache_set( $cache_key, $id, 'posts' );
	}

	return $id;
}

常见问题

FAQs
查看更多 >