Как расширить TimberPost - PullRequest
       8

Как расширить TimberPost

0 голосов
/ 26 февраля 2019

Вероятно, это что-то очевидное и у меня под носом.

Я не понимал, как привязать мой расширенный класс к древесине.

Давайте рассмотрим пример проблем .Как я могу получить объект типа MySitePost, когда я вызываю Timber::query_post()?

Так что теперь у меня есть простой способ сослаться на {{ post.issue }} в наших шаблонах веток.Выглядит как автоматический процесс ... но я не уверен в этом!

Для справки: https://timber.github.io/docs/guides/extending-timber/

1 Ответ

0 голосов
/ 27 февраля 2019

Я думаю, что это хороший вопрос, который может быть не так очевиден.

Чтобы использовать свой пользовательский пост, вы часто находите параметр, выбирая посты, где вы можете передать имя своего пользовательского класса.Тогда возвращенный объект будет экземпляром вашего пользовательского класса.

$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 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...