При работе с крючками и фильтрами (или в вашем короткие номера дела) в контексте класса, вам необходимо определить обратный вызов немного по-другому.
Последний пример в 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.
Awesome! Огромное спасибо. –
Примите ответ, если он сработает для вас. – tehlivi