2016-05-24 3 views
1

Я немного пожалел об этом, и я изо всех сил пытаюсь получить этот короткий код, чтобы частично воспроизвести этот Twig при его вызове. У кого-нибудь есть совет?Измените .twig-файл, когда короткий код вызывается в WordPress?

Спасибо!

Вот что я до сих пор:

<?php namespace loc\wp\lib; 
use \Timber as Timber; 
use \Twig_SimpleFunction as Twig_SimpleFunction; 
class LOCShortcodes { 
    public function addSlider() { 
    add_shortcode('feature-slider', 'feature_slider'); 
    function feature_slider() { 
     return Timber::render('template-feature-slider.twig'); 
    } 
    } 
} 

ответ

1

При работе с крючками и фильтрами (или в вашем короткие номера дела) в контексте класса, вам необходимо определить обратный вызов немного по-другому.

Последний пример в https://codex.wordpress.org/Function_Reference/add_shortcode показывает вам, как использовать шорткоды с классами:

<?php 

class MyPlugin { 
    public static function baztag_func($atts, $content = "") { 
     return "content = $content"; 
    } 
} 

add_shortcode('baztag', array('MyPlugin', 'baztag_func')); 

Как вы можете видеть, шорткод добавляется вне класса. Если вы хотите добавить его в своем классе, то вы не должны явно использовать имя класса, но вы можете использовать $this:

<?php 

class MyPlugin { 
    public function __construct() { 
     add_shortcode('baztag', array($this, 'baztag_func')); 
    } 

    public static function baztag_func($atts, $content = "") { 
     return "content = $content"; 
    } 
} 

В вашем случае, вы могли бы сделать это следующим образом:

<?php 

class LOCShortcodes { 
    public function __construct() { 
     add_shortcode('feature-slider', array($this, 'feature_slider')); 
    } 

    public function feature_slider() { 
     return Timber::compile('template-feature-slider.twig'); 
    } 
} 

не забудьте использовать Timber::compile() вместо Timber::render(), так как функция render() является вторя выход, в то время как для коротких номеров, выход должен быть возвращен. Это также упоминается в документе Notes section in the Codex:

Обратите внимание, что функция, называемая коротким кодом, никогда не должна выводить какой-либо результат. Функции Shortcode должны возвращать текст, который будет использоваться для замены короткого кода. Прямое производство выходного сигнала приведет к неожиданным результатам. [...]

Также не забудьте прочитать раздел wiki около Shortcodes in Timber.

+0

Awesome! Огромное спасибо. –

+0

Примите ответ, если он сработает для вас. – tehlivi

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