Шорткод для вывода Oxygen templates и reusable в любом месте на сайте
Как то нужно было сделать, чтобы шаблон сделанный в Oxygen показывался через шорткод в меню или выводился в баннере отдельно. Тогда я нашел замечательную статью Shortcode for displaying Oxygen templates and reusable parts. В не был готовый шорткод, в катором указывался ID reusable и он выводил контент с Oxy в любом месте. Проблема была только в оформлении, все настройки нужно было делать через классы, так как настройки к селектору ID не применялись, так как файлы со стилями не подгружались для этого reusable в других местах (так как он вставлялся не стандартно)
Вот пример этого кода:
add_shortcode( 'oxygen-template', 'func_oxygen_template' );
/**
* Add a custom shortcode for displaying a Oxygen template/reusable part.
*
* Sample usage: <!-- Oxygen template removed -->
*
* @param array $atts Shortcode attributes.
* @return string HTML output of the specified Oxygen template/reusable part.
*/
function func_oxygen_template( $atts ) {
return do_oxygen_elements( json_decode( get_post_meta( $atts['id'], 'ct_builder_json', true ), true ) );
}
А в мае 2024 года после обновления Oxygen c 4.8.2 до 4.8.3 этот код перестал работать, и шорткод выводил пустое место. Оказалось, что причина была в прификсе мета полей. Так как с версии 4.8.3 мета поля были с прификсом «_» (нижнего подчеркивания).
И код изменился на такой с версии =>4.8.3:
add_shortcode( 'oxygen-template', 'func_oxygen_template' );
/**
* Add a custom shortcode for displaying a Oxygen template/reusable part.
*
* Sample usage: <!-- Oxygen template removed -->
*
* @param array $atts Shortcode attributes.
* @return string HTML output of the specified Oxygen template/reusable part.
*/
function func_oxygen_template( $atts ) {
return do_oxygen_elements( json_decode( get_post_meta( $atts['id'], '_ct_builder_json', true ), true ) );
}