'; $pagination_type = get_theme_mod( 'neve_pagination_type', 'number' ); if ( $pagination_type !== 'infinite' ) { global $wp_query; $posts_on_current_page = $wp_query->post_count; $hook_after_post = -1; if ( $posts_on_current_page >= 2 ) { $hook_after_post = (int) ceil( $posts_on_current_page / 2 ); } $post_index = 1; } if ( $should_add_hook ) { /** * Executes actions before a post loop. * * The dynamic portion of the hook name, $current_post_type, refers to the post type slug. * This hook is not available for the following post types: post, page, product. * * Possible action names include: * - neve_loop_attachment_before * - neve_loop_acme_product_before * * @since 2.11 */ do_action( 'neve_loop_' . $current_post_type . '_before' ); } /** * Exclude posts from the main loop * * @param array $excluded_posts Excluded post ids. * @since 3.2 */ $excluded_posts = apply_filters( 'nv_exclude_posts', [] ); while ( have_posts() ) { the_post(); $pid = get_the_ID(); if ( in_array( $pid, $excluded_posts, true ) ) { continue; } if ( $should_add_hook ) { /** * Executes actions before a post loop entry. * * The dynamic portion of the hook name, $current_post_type, refers to the post type slug. * This hook is not available for the following post types: post, page, product. * * Possible action names include: * - neve_loop_attachment_entry_before * - neve_loop_acme_product_entry_before * * @since 2.11 */ do_action( 'neve_loop_' . $current_post_type . '_entry_before' ); } /** * Executes actions before rendering the post content. * * @since 2.11 */ do_action( 'neve_loop_entry_before' ); get_template_part( 'template-parts/content', get_post_type() ); if ( $pagination_type !== 'infinite' ) { if ( $post_index === $hook_after_post && $hook_after_post !== - 1 ) { /** * Executes actions in the middle of the loop. * * The actions only fires if the pagination is not set as "infinite scroll". * * @since 2.3.10 */ do_action( 'neve_middle_posts_loop' ); } $post_index ++; } /** * Executes actions after rendering the post content. * * @since 2.11 */ do_action( 'neve_loop_entry_after' ); if ( $should_add_hook ) { /** * Executes actions after a post loop entry. * * The dynamic portion of the hook name, $current_post_type, refers to the post type slug. * This hook is not available for the following post types: post, page, product. * * Possible action names include: * - neve_loop_attachment_entry_after * - neve_loop_acme_product_entry_after * * @since 2.11 */ do_action( 'neve_loop_' . $current_post_type . '_entry_after' ); } } echo '
'; if ( ! is_singular() ) { /** * Executes the rendering function for the pagination. * * @param string $context Pagination location context. */ do_action( 'neve_do_pagination', 'blog-archive' ); } } else { get_template_part( 'template-parts/content', 'none' ); } ?>