You are thinking of WordPress templates as PHP application code. Essentially they are not that.
WordPress templates by design are templates using Template Tags API. It is extra level of abstraction, that just happens to allow to use rest of PHP language too.
The ease of template tags serves the popularity of WordPress and extremely low entry bar for people to tweak themes. Believe me, there are plenty of people around who use/tweak loops without much understanding of what they actually are, in extreme cases, what arrays even are.
Related Posts:
- if ( is_home() && ! is_front_page() )
- include(locate_template) messing up the loop
- Update status of all posts in a category
- Second Loop Showing Only One Post on Single Post Page
- Call wp-blog-header.php header without performing a wp_query
- Get markup for post without loading into the template
- How to add a byline to all the pages?
- Trying to get property ‘post_content’ of non-object
- Infinite Loop after Genesis Theme Upgrade
- Default Template infinite loop of Title
- the_title() shows title of the first post instead of the page title?
- Child Pages Loop
- Loop.php vs looping inside template file
- Insert/sticky specific post into Loop at specific location
- Style every four posts differently [duplicate]
- Return vs Echo Shortcode
- have_posts() return false but count says “3”
- next_posts_link not working in custom loop
- Ajax loop in sidebar to load post titles/categories
- Finding Page Template and Displaying Content
- How to sort posts in archive loop
- wordpress post loop in javascript
- How to iterate through database until it find a match
- Show top level comments ordered by number of replies
- Loop through pages with specific template
- Loop starts from the beginning with second while loop on author.php
- wordpress change the loop order by dynamic value
- Post Format single-loop.php using get_template_part
- Varying Search Result Pages
- Single page site (WordPress) including posts
- Meta Query with spaces in value?
- A loop with all articles with certain text strings in tags
- Prevent Headers from being sent
- How do I get row padding in a post feed?
- Display the_content on click jquery
- How can I create a legend (Key) like the one in the footer on WordPress StackExchange
- It is possible to encounter horrible bugs if I place a main loop that uses `query_posts` right above the main bbPress loop?
- Missing image in gallery shortcode in custom feed
- Styling text and images in the_content()
- How do I use AJAX Query in my posts loop?
- How to show “teaser” posts on blog / archive pages, otherwise full posts
- Duplicate posts in paginated results
- Output loop leveraged shortcode twice on one page
- Alter query using pre_get_posts() if meta_key is present
- Next Posts Prev Posts for Standard post format only
- Genesis multiple category custom loop 404s after first page
- Shortcode in posts called by ajax is not working
- Using Javascript for Looped Content
- Added if statement to loop
- How to get The Loop working with $wpdb->get_results()
- Making a query to the DB using same parameters of loop
- Variable not being passed into WordPress loop
- Exclude duplicated $sticky post from combined loop content
- Group posts by date with a list
- Add class to last 3 posts in loop
- Will only show the first 10 wordpress posts instead of all my posts
- WP Loop. If featured image is a panorama (3:1 ratio) execute some code
- Trying to get property of non-object in shortocde
- displaying recent comments outside loop without plugin
- get_the_ID not returning correct ID value
- How to Loop with the final result formatted differently?
- Tags on page (not post) returns nothing – why? Improved clarified question!
- Include future posts in tags and in search
- loop inside the foreach
- How to display 3 post per slide
- How to put a block of code between [shortcode][/shortcode] in do_shortcode()?
- current-user_can not working in loop
- Show terms in archive page
- How can I access a post’s feature image outside the loop?
- Multiple loops for plugin
- Sort posts according to a numeric value entered with ACF
- wp_get_attachment_url not fetching URL?
- Undefined index: page in loop load ajax content
- Only Show Excerpt After First 3 Posts
- How to get all multi-select user meta values and add them to an array?
- How to insert content before pagination in loop?
- How to resolve a reload loop issue in the frontend when logged in to WordPress multi-site backend admin area
- Excerpt isn’t working or am I missing something?
- Can I temporarily disable global $post?
- Shortcode for pulling specific Post Title outside loop when ID is passed in
- Show a list of user posts in the user admin page
- Deeply Nested Menu Loop with Twig using Timber [closed]
- WordPress redundant posts based on meta field
- Get featured image outside the loop using foreach
- pre_get_posts main_query not displaying after applying tax_query filters
- WordPress loop only displays 5 articles max?
- setup_postdata in “loop-handling” php file called via $.ajax
- Secondary loop cuts off at 10 posts?
- How get the 10 most viewed pages (not post)
- get all page templates
- Paged homepage – requirements?
- Least Number of Loops to Create Custom Homepage?
- The Loop for my theme with static front page is not working
- Previous Posts Link and Next Posts Link Show All The Same Articles?
- Posts Loops To Display Specific Posts Inside Page Template?
- Use callback function in AJAX pure javascript [closed]
- Undefined variable: woocommerce_loop [closed]
- title not being printed within html tag [closed]
- Prevent duplicating specific column from database table
- I make sticky post for my archive page for custom post type with ACF field and loop is not working