WPSEO_Post_Type_Sitemap_Provider::get_sql_where_clause()protectedYoast 1.0

Constructs an SQL where clause for a given post type.

Метод класса: WPSEO_Post_Type_Sitemap_Provider{}

Хуков нет.

Возвращает

Строку.

Использование

// protected - в коде основоного (родительского) или дочернего класса
$result = $this->get_sql_where_clause( $post_type );
$post_type(строка) (обязательный)
Post type slug.

Код WPSEO_Post_Type_Sitemap_Provider::get_sql_where_clause() Yoast 22.4

protected function get_sql_where_clause( $post_type ) {

	global $wpdb;

	$join          = '';
	$post_statuses = array_map( 'esc_sql', WPSEO_Sitemaps::get_post_statuses( $post_type ) );
	$status_where  = "{$wpdb->posts}.post_status IN ('" . implode( "','", $post_statuses ) . "')";

	// Based on WP_Query->get_posts(). R.
	if ( $post_type === 'attachment' ) {
		$join            = " LEFT JOIN {$wpdb->posts} AS p2 ON ({$wpdb->posts}.post_parent = p2.ID) ";
		$parent_statuses = array_diff( $post_statuses, [ 'inherit' ] );
		$status_where    = "p2.post_status IN ('" . implode( "','", $parent_statuses ) . "') AND p2.post_password = ''";
	}

	$where_clause = "
		{$join}
		WHERE {$status_where}
			AND {$wpdb->posts}.post_type = %s
			AND {$wpdb->posts}.post_password = ''
			AND {$wpdb->posts}.post_date != '0000-00-00 00:00:00'
	";

	return $wpdb->prepare( $where_clause, $post_type );
}