Automattic\WooCommerce\Internal\Admin\Marketing
MarketingSpecs::get_knowledge_base_posts()
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() 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; }