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 $term ): array;
- ?string $term (обязательный)
- -
Код MarketingSpecs::get_knowledge_base_posts() MarketingSpecs::get knowledge base posts WC 8.1.1
public function get_knowledge_base_posts( ?string $term ): array { $terms = array( 'marketing' => array( 'taxonomy' => 'category', 'term_id' => 1744, 'argument' => 'categories', ), 'coupons' => array( 'taxonomy' => 'post_tag', 'term_id' => 1377, 'argument' => 'tags', ), ); // Default to the marketing category (if no term is set on the kb component). if ( empty( $term ) || ! array_key_exists( $term, $terms ) ) { $term = 'marketing'; } $term_id = $terms[ $term ]['term_id']; $argument = $terms[ $term ]['argument']; $kb_transient = self::KNOWLEDGE_BASE_TRANSIENT . '_' . strtolower( $term ); $posts = get_transient( $kb_transient ); if ( false === $posts ) { $request_url = add_query_arg( array( $argument => $term_id, 'page' => 1, 'per_page' => 8, '_embed' => 1, ), 'https://woocommerce.com/wp-json/wp/v2/posts?utm_medium=product' ); $request = wp_remote_get( $request_url, array( 'user-agent' => 'WooCommerce/' . WC()->version . '; ' . get_bloginfo( 'url' ), ) ); $posts = []; if ( ! is_wp_error( $request ) && 200 === $request['response']['code'] ) { $raw_posts = json_decode( $request['body'], true ); foreach ( $raw_posts as $raw_post ) { $post = [ '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 = $raw_post['_embedded']['wp:featuredmedia'] ?? []; 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; }