Skip to main content
Timber

You are reading the documentation for Timber v2.x. Switch to the documentation for Timber v1.x.

Timber\​Attachment

Objects of this class represent WordPress attachments. This is the basis that Timber\Image objects build upon.

Overview #

This class extends Timber\Post

Properties #

NameTypeDescription
$filestring
$file_extensionstringA file extension.
$file_locstringThe absolute path to the attachmend file in the filesystem (Example: /var/www/htdocs/wp-content/uploads/2015/08/my-pic.jpg)

Methods #

NameReturn TypeSummary/Returns
__call()mixedThis is helpful for twig to return properties and methods see: https://github.com/fabpot/Twig/issues/2
__get()mixedThis is helpful for twig to return properties and methods see: https://github.com/fabpot/Twig/issues/2
__toString()stringGets the src for an attachment.

Returns: The src of the attachment.
author()\Timber\User or nullReturn the author of a post

Returns: A User object if found, false if not
authors()arrayGot more than one author? That's cool, but you'll need Co-Authors plus or another plugin to access any data
can_edit()boolChecks whether the current user can edit the post.
caption()string or nullGets the caption of an attachment.
categories()arrayGet the categories on a particular post

Returns: of Timber\Term objects
category()\Timber\Term or nullGets a category attached to a post.
children()\Timber\PostCollectionInterfaceReturns an array of children on the post as Timber\Posts (or other claass as you define).
comment_count()intGets the number of comments on a post.

Returns: The number of comments on a post
comment_form()stringGets the comment form for use on a single article page

Returns: of HTML for the form
comments()bool or \Timber\CommentThreadGets the comments on a Timber\Post and returns them as an array of Timber\Comment objects (or whatever comment class you set).
content()stringGets the actual content of a WordPress post.

Returns: The content of the post.
convert()Finds any WP_Post objects and converts them to Timber\Post objects.
date()stringGets the publishing date of the post.
edit_link()string or nullGets the edit link for a post if the current user has the correct rights.

Returns: The edit URL of a post in the WordPress admin or null if the current user can’t edit the post.
excerpt()\Timber\PostExcerptGets a excerpt of your post.
extension()stringGets the extension of the attached file.

Returns: An uppercase extension string.
field_object()mixedGets the field object data from Advanced Custom Fields.
file()stringGets the relative path to the uploads folder of an attachment.
file_loc()stringGets the absolute path to an attachment.
format()mixed
gallery()arrayReturns galleries from the post’s content.

Returns: A list of arrays, each containing gallery data and srcs parsed from the expanded shortcode.
get_field()mixedGets a post meta value.

Returns: The meta field value.
has_field()bool
has_term()bool
import_field()Import field data onto this object
link()stringGets the link to an attachment.

Returns: The URL of the attachment.
meta()mixedGets an object meta value.

Returns: The custom field value or an array of custom field values. Null if no value could be found.
modified_author()\Timber\User or nullGet the author (WordPress user) who last modified the post

Returns: A User object if found, false if not
modified_date()stringGets the date the post was last modified.
modified_time()stringGets the time of the last modification of the post to use in your template.
modified_timestamp()false or intGets the timestamp when the post was last modified.

Returns: Unix timestamp on success, false on failure.
name()string
next()mixedGets the next post that is adjacent to the current post in a collection.
pagination()arrayGets a data array to display a pagination for your paginated post.

Returns: An array with data to build your paginated content.
parent()null or \Timber\PostGets the parent object.

Returns: Parent object as a Timber\Post. Returns false if no parent object is defined.
password_required()boolwhether post requires password and correct password has been provided
path()stringGets the relative path to an attachment.

Returns: The relative path to an attachment.
prev()mixedGet the previous post that is adjacent to the current post in a collection.
preview()\Timber\PostExcerptGets an excerpt of your post.
raw_meta()null or mixedGets an object meta value directly from the database.

Returns: The meta field value(s). Null if no value could be found, an empty array if all fields were requested but no values could be found.
setup()\Timber\PostSets up a post.

Returns: The post instance.
size()int or nullGets the raw filesize in bytes.

Returns: The raw filesize or null if it could not be read.
src()stringGets the source URL for an attachment.
tags()arrayGets the tags on a post, uses WP's post_tag taxonomy
teardown()\Timber\PostResets variables after post has been used.

Returns: The post instance.
terms()arrayGets the terms associated with the post.

Returns: An array of taxonomies.
thumbnail()\Timber\Image or nullget the featured image as a Timber/Image

Returns: of your thumbnail
thumbnail_id()false or intGets the post’s thumbnail ID.

Returns: The default post’s ID. False if no thumbnail was defined.
time()stringGets the time the post was published to use in your template.
timestamp()false or intGets the timestamp when the post was published.

Returns: Unix timestamp on success, false on failure.
title()stringReturns the processed title to be used in templates. This returns the title of the post after WP's filters have run. This is analogous to the_title() in standard WP template tags.
type()\Timber\PostTypeReturns the PostType object for a post’s post type with labels and other info.

Class Methods #

__call() #

This is helpful for twig to return properties and methods see: https://github.com/fabpot/Twig/issues/2

This is also here to ensure that {{ post.class }} remains usable

__call( mixed $field, mixed $args )

Returns: mixed

This method is inherited from \Timber\Post.


__get() #

This is helpful for twig to return properties and methods see: https://github.com/fabpot/Twig/issues/2

This is also here to ensure that {{ post.class }} remains usable.

__get( mixed $field )

Returns: mixed

This method is inherited from \Timber\Post.


__toString() #

Gets the src for an attachment.

Returns: string The src of the attachment.


author() #

Return the author of a post

Returns: \Timber\User|null A User object if found, false if not

This method is inherited from \Timber\Post.

Twig

<h1>{{post.title}}</h1>
<p class="byline">
<a href="{{post.author.link}}">{{post.author.name}}</a>
</p>

authors() #

Got more than one author? That's cool, but you'll need Co-Authors plus or another plugin to access any data

Returns: array

This method is inherited from \Timber\Post.


can_edit() #

Checks whether the current user can edit the post.

Returns: bool

This method is inherited from \Timber\Post.

Twig

{% if post.can_edit %}
<a href="{{ post.edit_link }}">Edit</a>
{% endif %}

caption() #

Gets the caption of an attachment.

since 2.0

Returns: string|null

Twig

<figure>
<img src="{{ post.thumbnail.src }}">

{% if post.thumbnail is not empty %}
<figcaption>{{ post.thumbnail.caption }}</figcaption
{% endif %}
</figure>

categories() #

Get the categories on a particular post

Returns: array of Timber\Term objects

This method is inherited from \Timber\Post.


category() #

Gets a category attached to a post.

If multiple categories are set, it will return just the first one.

Returns: \Timber\Term|null

This method is inherited from \Timber\Post.


children() #

Returns an array of children on the post as Timber\Posts (or other claass as you define).

children( string|array $args = 'any' )

Returns: \Timber\PostCollectionInterface

This method is inherited from \Timber\Post.

NameTypeDescription
$argsstring or arrayoptional An array of arguments for the get_children function or a string/non-indexed array to use as the post type(s).

Twig

{% if post.children %}
Here are the child pages:
{% for child in post.children %}
<a href="{{ child.link }}">{{ child.title }}</a>
{% endfor %}
{% endif %}

comment_count() #

Gets the number of comments on a post.

Returns: int The number of comments on a post

This method is inherited from \Timber\Post.


comment_form() #

Gets the comment form for use on a single article page

comment_form( array $args = [] )

Returns: string of HTML for the form

This method is inherited from \Timber\Post.

NameTypeDescription
$argsarraysee WordPress docs on comment_form for reference on acceptable parameters

comments() #

Gets the comments on a Timber\Post and returns them as an array of Timber\Comment objects (or whatever comment class you set).

see Timber\CommentThread for an example with nested comments

comments( int $count = null, string $order = 'wp', string $type = 'comment', string $status = 'approve' )

Returns: bool|\Timber\CommentThread

This method is inherited from \Timber\Post.

NameTypeDescription
$countintSet the number of comments you want to get. 0 is analogous to "all".
$orderstringUse ordering set in WordPress admin, or a different scheme.
$typestringFor when other plugins use the comments table for their own special purposes. Might be set to 'liveblog' or other, depending on what’s stored in your comments table.
$statusstringCould be 'pending', etc.

single.twig

Twig

<div id="post-comments">
<h4>Comments on {{ post.title }}</h4>
<ul>
{% for comment in post.comments() %}
{% include 'comment.twig' %}
{% endfor %}
</ul>
<div class="comment-form">
{{ function('comment_form') }}
</div>
</div>

comment.twig

Twig

{# comment.twig #}
<li>
<p class="comment-author">{{ comment.author.name }} says:</p>
<div>{{ comment.content }}</div>
</li>

content() #

Gets the actual content of a WordPress post.

As opposed to using {{ post.post_content }}, this will run the hooks/filters attached to the the_content filter. It will return your post’s content with WordPress filters run on it – which means it will parse blocks, convert shortcodes or run wpautop() on the content.

If you use page breaks in your content to split your post content into multiple pages, use {{ post.paged_content }} to display only the content for the current page.

content( int $page = '', int $len = -1, bool $remove_blocks = false )

Returns: string The content of the post.

This method is inherited from \Timber\Post.

NameTypeDescription
$pageintOptional. The page to show if the content of the post is split into multiple pages. Read more about this in the Pagination Guide. Default 0.
$lenintOptional. The number of words to show. Default -1 (show all).
$remove_blocksboolOptional. Whether to remove blocks. Defaults to false. True when called from the $post->excerpt() method.

Twig

<article>
<h1>{{ post.title }}</h1>

<div class="content">{{ post.content }}</div>
</article>

convert() #

Finds any WP_Post objects and converts them to Timber\Post objects.

convert( array|\WP_Post $data )

This method is inherited from \Timber\Post.

NameTypeDescription
$dataarray or \WP_Post

date() #

Gets the publishing date of the post.

This function will also apply the get_the_date filter to the output.

If you use {{ post.date }} with the |time_ago filter, then make sure that you use a time format including the full time and not just the date.

date( string|null $date_format = null )

Returns: string

This method is inherited from \Timber\Post.

NameTypeDescription
$date_formatstring or nullOptional. PHP date format. Will use the date_format option as a default.

Twig

{# Uses date format set in Settings → General #}
Published on {{ post.date }}
OR
Published on {{ post.date('F jS') }}
which was
{{ post.date('U')|time_ago }}
{{ post.date('Y-m-d H:i:s')|time_ago }}
{{ post.date(constant('DATE_ATOM'))|time_ago }}

HTML

Published on January 12, 2015
OR
Published on Jan 12th
which was
8 years ago

Gets the edit link for a post if the current user has the correct rights.

Returns: string|null The edit URL of a post in the WordPress admin or null if the current user can’t edit the post.

This method is inherited from \Timber\Post.

Twig

{% if post.can_edit %}
<a href="{{ post.edit_link }}">Edit</a>
{% endif %}

excerpt() #

Gets a excerpt of your post.

If you have an excerpt is set on the post, the excerpt will be used. Otherwise it will try to pull from an excerpt from post_content. If there’s a <!-- more --> tag in the post content, it will use that to mark where to pull through.

see Timber\PostExcerpt

excerpt( array $options = [] )

Returns: \Timber\PostExcerpt

This method is inherited from \Timber\Post.

NameTypeDescription
$optionsarrayAn array of configuration options for generating the excerpt. Default empty.

  • $words
    int Number of words in the excerpt. Default 50.
  • $chars
    int or bool Number of characters in the excerpt. Default false (no character limit).
  • $end
    string String to append to the end of the excerpt. Default '…' (HTML ellipsis character).
  • $force
    bool Whether to shorten the excerpt to the length/word count specified, if the editor wrote a manual excerpt longer than the set length. Default false.
  • $strip
    bool Whether to strip HTML tags. Default true.
  • $read_more
    string String for what the "Read More" text should be. Default 'Read More'.

Twig

<h2>{{ post.title }}</h2>
<div>{{ post.excerpt({ words: 100, read_more: 'Keep reading' }) }}</div>

extension() #

Gets the extension of the attached file.

since 2.0.0

Returns: string An uppercase extension string.

Use extension information in a link that downloads a file:

Twig

<a class="download" href="{{ attachment.src }}" download="{{ attachment.title }}">
<span class="download-title">{{ attachment.title }}</span>
<span class="download-info">
(Download {{ attachment.extension|upper }}, {{ attachment.size }})
</span>
</a>

field_object() #

Gets the field object data from Advanced Custom Fields.

This includes metadata on the field like whether it's conditional or not.

since 1.6.0

field_object( string $field_name )

Returns: mixed

This method is inherited from \Timber\Post.

NameTypeDescription
$field_namestringof the field you want to lookup.

file() #

Gets the relative path to the uploads folder of an attachment.

Returns: string


file_loc() #

Gets the absolute path to an attachment.

Returns: string


format() #

Returns: mixed

This method is inherited from \Timber\Post.


Returns galleries from the post’s content.

gallery( mixed $html = true )

Returns: array A list of arrays, each containing gallery data and srcs parsed from the expanded shortcode.

This method is inherited from \Timber\Post.

Twig

{{ post.gallery }}

get_field() #

Gets a post meta value.

DEPRECATED since 2.0.0, use {{ post.meta('field_name') }} instead.

see Timber\Post::meta()

get_field( string $field_name = null )

Returns: mixed The meta field value.

This method is inherited from \Timber\Post.

NameTypeDescription
$field_namestringThe field name for which you want to get the value.

has_field() #

has_field( string $field_name )

Returns: bool

This method is inherited from \Timber\Post.

NameTypeDescription
$field_namestring

has_term() #

has_term( string|int $term_name_or_id, string $taxonomy = 'all' )

Returns: bool

This method is inherited from \Timber\Post.

NameTypeDescription
$term_name_or_idstring or int
$taxonomystring

import_field() #

Import field data onto this object

DEPRECATED since since 2.0.0

import_field( string $field_name )

This method is inherited from \Timber\Post.

NameTypeDescription
$field_namestring

Gets the link to an attachment.

This returns a link to an attachment’s page, but not the link to the image src itself.

Returns: string The URL of the attachment.

Twig

<a href="{{ image.link }}"><img src="{{ image.src }} "></a>

HTML

<a href="https://example.org/my-cool-picture">
<img src="https://example.org/wp-content/uploads/2015/whatever.jpg"/>
</a>

meta() #

Gets an object meta value.

Returns a meta value or all meta values for all custom fields of an object saved in the meta database table.

Fetching all values is only advised during development, because it can have a big performance impact, when all filters are applied.

meta( string $field_name = '', array $args = [] )

Returns: mixed The custom field value or an array of custom field values. Null if no value could be found.

This method is inherited from \Timber\Post.

NameTypeDescription
$field_namestringOptional. The field name for which you want to get the value. If no field name is provided, this function will fetch values for all custom fields. Default empty string.
$argsarrayAn array of arguments for getting the meta value. Third-party integrations can use this argument to make their API arguments available in Timber. Default empty array.

modified_author() #

Get the author (WordPress user) who last modified the post

Returns: \Timber\User|null A User object if found, false if not

This method is inherited from \Timber\Post.

Twig

Last updated by {{ post.modified_author.name }}

HTML

Last updated by Harper Lee

modified_date() #

Gets the date the post was last modified.

This function will also apply the get_the_modified_date filter to the output.

modified_date( string|null $date_format = null )

Returns: string

This method is inherited from \Timber\Post.

NameTypeDescription
$date_formatstring or nullOptional. PHP date format. Will use the date_format option as a default.

Twig

{# Uses date format set in Settings → General #}
Last modified on {{ post.modified_date }}
OR
Last modified on {{ post.modified_date('F jS') }}

HTML

Last modified on January 12, 2015
OR
Last modified on Jan 12th

modified_time() #

Gets the time of the last modification of the post to use in your template.

This function will also apply the get_the_time filter to the output.

modified_time( string|null $time_format = null )

Returns: string

This method is inherited from \Timber\Post.

NameTypeDescription
$time_formatstring or nullOptional. PHP date format. Will use the time_format option as a default.

Twig

{# Uses time format set in Settings → General #}
Published at {{ post.time }}
OR
Published at {{ post.time|time('G:i') }}

HTML

Published at 1:25 pm
OR
Published at 13:25

modified_timestamp() #

Gets the timestamp when the post was last modified.

since 2.0.0

Returns: false|int Unix timestamp on success, false on failure.

This method is inherited from \Timber\Post.


name() #

Returns: string

This method is inherited from \Timber\Post.


next() #

Gets the next post that is adjacent to the current post in a collection.

Works pretty much the same as get_next_post().

next( bool|string $in_same_term = false )

Returns: mixed

This method is inherited from \Timber\Post.

NameTypeDescription
$in_same_termbool or stringWhether the post should be in a same taxonomy term. Default false.

Twig

{% if post.next %}
<a href="{{ post.next.link }}">{{ post.next.title }}</a>
{% endif %}

pagination() #

Gets a data array to display a pagination for your paginated post.

Use this in combination with {{ post.paged_content }}.

Returns: array An array with data to build your paginated content.

This method is inherited from \Timber\Post.

Using simple links to the next an previous page. Twig

{% if post.pagination.next is not empty %}
<a href="{{ post.pagination.next.link|esc_url }}">Go to next page</a>
{% endif %}

{% if post.pagination.prev is not empty %}
<a href="{{ post.pagination.prev.link|esc_url }}">Go to previous page</a>
{% endif %}

Using a pagination for all pages. Twig

{% if post.pagination.pages is not empty %}
<nav aria-label="pagination">
<ul>
{% for page in post.pagination.pages %}
<li>
{% if page.current %}
<span aria-current="page">Page {{ page.title }}</span>
{% else %}
<a href="{{ page.link|esc_ur }}">Page {{ page.title }}</a>
{% endif %}
</li>
{% endfor %}
</ul>
</nav>
{% endif %}

parent() #

Gets the parent object.

The parent object of an attachment is a post it is assigned to.

Returns: null|\Timber\Post Parent object as a Timber\Post. Returns false if no parent object is defined.

Twig

This image is assigned to {{ image.parent.title }}

password_required() #

whether post requires password and correct password has been provided

Returns: bool

This method is inherited from \Timber\Post.


path() #

Gets the relative path to an attachment.

Returns: string The relative path to an attachment.

Twig

<img src="{{ image.path }}" />

HTML

<img src="/wp-content/uploads/2015/08/pic.jpg" />

prev() #

Get the previous post that is adjacent to the current post in a collection.

Works pretty much the same as get_previous_post().

prev( bool|string $in_same_term = false )

Returns: mixed

This method is inherited from \Timber\Post.

NameTypeDescription
$in_same_termbool or stringWhether the post should be in a same taxonomy term. Default false.

Twig

{% if post.prev %}
<a href="{{ post.prev.link }}">{{ post.prev.title }}</a>
{% endif %}

preview() #

Gets an excerpt of your post.

DEPRECATED since 2.0.0, use {{ post.excerpt }} instead.

If you have an excerpt is set on the post, the excerpt will be used. Otherwise it will try to pull from an excerpt from post_content. If there’s a <!-- more --> tag in the post content, it will use that to mark where to pull through.

This method returns a Timber\PostExcerpt object, which is a chainable object. This means that you can change the output of the excerpt by adding more methods. Refer to the documentation of the Timber\PostExcerpt class to get an overview of all the available methods.

see Timber\PostExcerpt

Returns: \Timber\PostExcerpt

This method is inherited from \Timber\Post.

Twig

{# Use default excerpt #}
<p>{{ post.excerpt }}</p>

{# Change the post excerpt text #}
<p>{{ post.excerpt.read_more('Continue Reading') }}</p>

{# Additionally restrict the length to 50 words #}
<p>{{ post.excerpt.length(50).read_more('Continue Reading') }}</p>

raw_meta() #

Gets an object meta value directly from the database.

Returns a raw meta value or all raw meta values saved in the meta database table. In comparison to meta(), this function will return raw values that are not filtered by third- party plugins.

Fetching raw values for all custom fields will not have a big performance impact, because WordPress gets all meta values, when the first meta value is accessed.

since 2.0.0

raw_meta( string $field_name = '' )

Returns: null|mixed The meta field value(s). Null if no value could be found, an empty array if all fields were requested but no values could be found.

This method is inherited from \Timber\Post.

NameTypeDescription
$field_namestringOptional. The field name for which you want to get the value. If no field name is provided, this function will fetch values for all custom fields. Default empty string.

setup() #

Sets up a post.

Sets up the $post global, and other global variables as well as variables in the $wp_query global that makes Timber more compatible with WordPress.

This function will be called automatically when you loop over Timber posts as well as in Timber::context().

since 2.0.0

Returns: \Timber\Post The post instance.

This method is inherited from \Timber\Post.


size() #

Gets the raw filesize in bytes.

Use the size_format filter to format the raw size into a human readable size («1 MB» instead of «1048576»)

see https://developer.wordpress.org/reference/functions/size_format/ Use filesize information in a link that downloads a file:

<a class="download" href="{{ attachment.src }}" download="{{ attachment.title }}">
<span class="download-title">{{ attachment.title }}</span>
<span class="download-info">(Download, {{ attachment.size|size_format }})</span>
</a>

since 2.0.0

Returns: int|null The raw filesize or null if it could not be read.


src() #

Gets the source URL for an attachment.

Returns: string

Twig

<a href="{{ get_attachment(post.meta('job_pdf')).src }}" download>

HTML

<a href="https://example.org/wp-content/uploads/2015/08/job-ad-5noe2304i.pdf" download>

tags() #

Gets the tags on a post, uses WP's post_tag taxonomy

Returns: array

This method is inherited from \Timber\Post.


teardown() #

Resets variables after post has been used.

This function will be called automatically when you loop over Timber posts.

since 2.0.0

Returns: \Timber\Post The post instance.

This method is inherited from \Timber\Post.


terms() #

Gets the terms associated with the post.

terms( string|array $query_args = [], array $options = [] )

Returns: array An array of taxonomies.

This method is inherited from \Timber\Post.

NameTypeDescription
$query_argsstring or arrayAny array of term query parameters for getting the terms. See WP_Term_Query::__construct() for supported arguments. Use the taxonomy argument to choose which taxonomies to get. Defaults to querying all registered taxonomies for the post type. You can use custom or built-in WordPress taxonomies (category, tag). Timber plays nice and figures out that tag, tags or post_tag are all the same (also for categories or category). For custom taxonomies you need to define the proper name.
$optionsarrayOptional. An array of options for the function.

  • $merge
    bool Whether the resulting array should be one big one (true) or whether it should be an array of sub-arrays for each taxonomy (false). Default true.

Twig

<section id="job-feed">
{% for post in job %}
<div class="job">
<h2>{{ post.title }}</h2>
<p>{{ post.terms({
taxonomy: 'category',
orderby: 'name',
order: 'ASC'
})|join(', ') }}
</p>
</div>
{% endfor %}
</section>

HTML

<section id="job-feed">
<div class="job">
<h2>Cheese Maker</h2>
<p>Cheese, Food, Fromage</p>
</div>
<div class="job">
<h2>Mime</h2>
<p>Performance, Silence</p>
</div>
</section>

PHP

// Get all terms of a taxonomy.
$terms = $post->terms( 'category' );

// Get terms of multiple taxonomies.
$terms = $post->terms( array( 'books', 'movies' ) );

// Use custom arguments for taxonomy query and options.
$terms = $post->terms( [
'taxonomy' => 'custom_tax',
'orderby' => 'count'
], [
'merge' => false
] );

thumbnail() #

get the featured image as a Timber/Image

Returns: \Timber\Image|null of your thumbnail

This method is inherited from \Timber\Post.

Twig

<img src="{{ post.thumbnail.src }}" />

thumbnail_id() #

Gets the post’s thumbnail ID.

since 2.0.0

Returns: false|int The default post’s ID. False if no thumbnail was defined.

This method is inherited from \Timber\Post.


time() #

Gets the time the post was published to use in your template.

This function will also apply the get_the_time filter to the output.

time( string|null $time_format = null )

Returns: string

This method is inherited from \Timber\Post.

NameTypeDescription
$time_formatstring or nullOptional. PHP date format. Will use the time_format option as a default.

Twig

{# Uses time format set in Settings → General #}
Published at {{ post.time }}
OR
Published at {{ post.time|time('G:i') }}

HTML

Published at 1:25 pm
OR
Published at 13:25

timestamp() #

Gets the timestamp when the post was published.

since 2.0.0

Returns: false|int Unix timestamp on success, false on failure.

This method is inherited from \Timber\Post.


title() #

Returns the processed title to be used in templates. This returns the title of the post after WP's filters have run. This is analogous to the_title() in standard WP template tags.

Returns: string

This method is inherited from \Timber\Post.

Twig

<h1>{{ post.title }}</h1>

type() #

Returns the PostType object for a post’s post type with labels and other info.

since 1.0.4

Returns: \Timber\PostType

This method is inherited from \Timber\Post.

Twig

This post is from <span>{{ post.type.labels.name }}</span>

HTML

This post is from <span>Recipes</span>