Post Loops: getting and displaying posts
If you need to display a section with the latest posts / company news / blog updates - a classic element of many homepages, LiveCanvas offers you a strategy that exposes all the power of WordPress to retrieve posts in a clean and powerful way, and to display them flexibly.
Data can of course be pulled from custom post types as well.
The output can be displayed as a listing, as a grid, or with your arbitrary custom callback function.
A simple example to get started
In the visual editor, add a section and insert the WordPress Integration / Get Posts element.
You should see a grid with your latest posts.
Upon clicking them, you'll see an interface that allows you to customize the query parameters and the output markup.
Inside the Blocks panel you will find the same WordPress Integration / Get Posts element - plus it's siblings Post List and Page List. These are all using the same shortcode underneath.
Let's see how you can populate a block with such an element and configure it to quickly get where you want to:
How to add a posts loop - The query options
Customize the output of your Posts Loop
How does it work and how to extend it
Have a look at the HTML code of the section.
Note: Just right-clicking the blue "Section" label on the page will show up the code editor, if you're lazy enough and want to skip opening the contextual menu.
Here's what the section code looks like:
So at the heart of this solution there's a shortcode: lc_get_posts
The shortcode is just a sort of wrapper to the get_posts function which is the best way to pull data from WP without having unwanted side effects. Is just simple and trivial code.
It has a lot of parameters. Here is complete listing with their default values as well:
Query-related parameters
These parameters control which posts will be called from the shortcode.
Geeks will like that these are the same that the get_posts function handles.
posts_per_page => 10
offset => 0
category =>
category_name =>
orderby => date
order => DESC
include =>
exclude =>
meta_key =>
meta_value =>
post_type => post
post_mime_type =>
post_parent =>
author =>
post_status => publish
suppress_filters => true
Output-related parameters
These parameters control the way posts are displayed - it's a handy way to control their layout.
output_view => lc_get_posts_default_view
The name of the function which shall be used for displaying posts. A custom callback function can be used so you can have full control on how the posts will look like. If you do use a custom callback, the following parameters are ignored.
output_wrapper_class =>
Name of CSS class which will wrap the whole post list
output_link_class =>
Name of CSS class which will be used for the link
output_heading_tag => h2
Heading tag to use for the article title
output_hide_elements =>
Used for hiding post elements - it defaults to none - but you can list here one or more comma separated elements chosen from this set: title, author, datetime, featured, excerpt, category, comments, clearfix
output_date_format=>
Date format attribute (From v 3.10 onwards)
output_featured_image_before =>
Set to 1 to have the featured image before the post title
output_featured_image_format => thumbnail
Useful to set each post's featured image format
output_featured_image_class => attachment-thumbnail img-responsive alignleft
Useful to set each post's image wrapper class
Extending and Customizing the View of your Posts
Dynamic Post Loop Templating
Custom Callback function
In order to have maximum control over the generated markup, you can use your own custom callback templating function.
This can be useful to do if you want to show posts in a carousel, as an example, or in a special widget that needs a precise HTML syntax.
You'll just need to add a simple function to your codebase, defining how retrieved posts are "printed".
A working example of this is inside this micro plugin, which is meant to be your starter point: Custom Posts Display (download here).
All the plugin does is to define the lc_get_posts_mycustom_view function.
After activating the plugin, edit via code editor your post loop.
Just add this parameter to the get_posts shortcode:
output_view="lc_get_posts_mycustom_view"
You will see that the post loop is shown as a linear set of posts, with uppercase titles.
Now duplicating/editing/hacking the PHP function in the plugin, you can have your posts rendered exactly how you want.