web/wp-content/themes/mozilla-builders/blocks/related-articles/related-articles.php (24 lines of code) (raw):

<?php /** * Custom block for inserting a list of Related articles * * Requires an Related Articles field group with two custom fields: * - header_text (Text) * - chosen_articles (Repeater) with the following sub field: * - related_article (Post Object) * Set this field group if the block is equal to Related Articles * * @package MozillaBuilders * @param array $block The block settings and attributes. */ use Timber\Timber; $alignment = $block['align'] ?? 'center'; $context = Timber::context(); $context['related_articles_header'] = get_field( 'header_text' ); $context['alignclass'] = "align$alignment"; $related_articles = get_field( 'chosen_articles' ); $related_articles_ids = array(); if ( is_array( $related_articles ) && ! empty( $related_articles ) ) { foreach ( $related_articles as $article ) { if ( ! empty( $article['related_article'] ) ) { $related_articles_ids[] = $article['related_article']->ID; } } // Set query args. if ( ! empty( $related_articles_ids ) ) { $args = array( 'post_status' => 'publish', 'post__in' => $related_articles_ids, 'orderby' => 'post__in', ); $context['related_articles'] = Timber::get_posts( $args ); } } Timber::render( basename( __DIR__ ) . '/related-articles.twig', $context );