Я думаю, что это хороший вопрос, который может быть не так очевиден.
Чтобы использовать свой пользовательский пост, вы часто находите параметр, выбирая посты, где вы можете передать имя своего пользовательского класса.Тогда возвращенный объект будет экземпляром вашего пользовательского класса.
$posts = Timber::get_posts( $your_args, 'MySitePost' );
$posts = new Timber\PostQuery( $your_args, 'MySitePost' );
Когда вы хотите получить один пост, он работает очень похоже.Вы можете напрямую создать экземпляр своего сообщения или передать его класс функции.
$post = new MySitePost();
$post = Timber::get_post( $post_id, 'MySitePost' );
Если вы хотите установить класс по умолчанию, который будет использоваться для ваших сообщений, вы можете использовать фильтр Timber\PostClassMap
:
// Use one class for all Timber posts.
add_filter( 'Timber\PostClassMap', function( $post_class, $post_type ) {
return 'MySitePost';
}, 10, 2 );
// Use default class for all post types, except for pages.
add_filter( 'Timber\PostClassMap', function( $post_class, $post_type ) {
// Bailout if not a page
if ( 'page' !== $post_type ) {
return $post_class;
}
return 'MySitePost';
}, 10, 2 );
// Use a class map for different post types
add_filter( 'Timber\PostClassMap', function( $post_class, $post_type ) {
return array(
'post' => 'MySitePost',
'apartment' => 'MyApartmentPost',
'city' => 'MyCityPost',
);
}, 10, 2 );