Automattic\WooCommerce\Internal\Admin\Marketing

MarketingSpecs::get_knowledge_base_posts()publicWC 1.0

Load knowledge base posts from WooCommerce.com

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

Хуков нет.

Возвращает

Массив.

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

$MarketingSpecs = new MarketingSpecs();
$MarketingSpecs->get_knowledge_base_posts( ?string $topic ): array;
?string $topic (обязательный)
-

Код MarketingSpecs::get_knowledge_base_posts() WC 9.3.3

public function get_knowledge_base_posts( ?string $topic ): array {
	// Default to the marketing topic (if no topic is set on the kb component).
	if ( empty( $topic ) ) {
		$topic = 'marketing';
	}

	$kb_transient = self::KNOWLEDGE_BASE_TRANSIENT . '_' . strtolower( $topic );

	$posts = get_transient( $kb_transient );

	if ( false === $posts ) {
		$request_url = add_query_arg(
			array(
				'page'     => 1,
				'per_page' => 8,
				'_embed'   => 1,
			),
			'https://woocommerce.com/wp-json/wccom/marketing-knowledgebase/v1/posts/' . $topic
		);

		$request = wp_remote_get(
			$request_url,
			array(
				'user-agent' => 'WooCommerce/' . WC()->version . '; ' . get_bloginfo( 'url' ),
			)
		);
		$posts   = array();

		if ( ! is_wp_error( $request ) && 200 === $request['response']['code'] ) {
			$raw_posts = json_decode( $request['body'], true );

			foreach ( $raw_posts as $raw_post ) {
				$post = array(
					'title'         => html_entity_decode( $raw_post['title']['rendered'] ),
					'date'          => $raw_post['date_gmt'],
					'link'          => $raw_post['link'],
					'author_name'   => isset( $raw_post['author_name'] ) ? html_entity_decode( $raw_post['author_name'] ) : '',
					'author_avatar' => isset( $raw_post['author_avatar_url'] ) ? $raw_post['author_avatar_url'] : '',
				);

				$featured_media = isset( $raw_post['_embedded']['wp:featuredmedia'] ) && is_array( $raw_post['_embedded']['wp:featuredmedia'] ) ? $raw_post['_embedded']['wp:featuredmedia'] : array();
				if ( count( $featured_media ) > 0 ) {
					$image         = current( $featured_media );
					$post['image'] = add_query_arg(
						array(
							'resize' => '650,340',
							'crop'   => 1,
						),
						$image['source_url']
					);
				}

				$posts[] = $post;
			}
		}

		set_transient(
			$kb_transient,
			$posts,
			// Expire transient in 15 minutes if remote get failed.
			empty( $posts ) ? 900 : DAY_IN_SECONDS
		);
	}

	return $posts;
}