2016-03-08 19 views
0

Я использую cmb2 для создания пользовательского типа сообщения, и у меня есть собственный тип сообщения, называемый legacy_cycle, который содержит несколько wysiwyg-файлов.Как вывести cmb2 wysiwyg с помощью дерева

Чем я использую Timber в качестве инструмента темы для отображения ввода. Однако поле wysiwyg не может работать должным образом. Это нормально, если он содержит только текст или изображение, но он выводит только следующую информацию, когда я вставляю видео в формате youtube в редактор wysiwyg под настраиваемым типом сообщения, но вывод из редактора родного Wordpress прекрасен.

" [embed]https://www.youtube.com/watch?v=MS91knuzoOA[/embed]" 

Я пытался использовать post.get_filed ('my_wysiwig'), но это не сработало.

Мне интересно, как я могу правильно вывести поле? очень признателен!

ответ

0

Таким образом, я понял это через этот пост .. Applying oembed filters to WYSIWYG field

Мое решение с использованием древесины/прутик, чтобы получить данные в single.php, а вот код:

$post_meta = get_post_meta(get_the_ID(),'my_wysiswg', true); 
$post_meta = $wp_embed->autoembed($post_meta); 
$post_meta = $wp_embed->run_shortcode($post_meta); 
$post_meta = do_shortcode($post_meta); 
$post_meta = wpautop($post_meta); 
$post->my_wysiswyg = $post_meta; 

Затем я могу напечатать видео в одной пользовательской-пост-type.twig с помощью {{}} post.my_wysiswyg

+0

Вы должны иметь возможность вырезать все это, используя 'apply_filters ('the_content', $ post_meta)' –

0

Похоже, вам просто нужно обработать короткие коды в этом поле. Это должно преобразовать те в фактические видео на YouTube:

{{ post.get_field('my_wysiswyg') | shortcodes }} 
+0

Спасибо за ответ, но он не работает .... – Lisa

0

Я использую CMB2 Exte nsively с Timber, и мой обычный подход заключается в расширении TimberPost и добавлении методов для получения метаданных. Для Wysiwyg поле, что-то вроде этого:

class CustomPost extends TimberPost { 

    public function my_wysiswg(){ 

    $metadata = get_post_meta($this->ID, 'my_wysiswg', true); 

    if ($metadata){ 
     return apply_filters('the_content', $metadata); 
    } 

    } 

} 

Вы можете указать, какой класс Timber будет использовать со вторым параметром Timber::get_posts

Смежные вопросы