В Woocommerce я использую плагин Штрих-коды и QR-коды YITH WooCommerce, и я хотел бы использовать настраиваемое поле в качестве значения аргумента в этом шорткоде. Вот сопутствующая документация.
Вот чего хотелось бы (whereCUSTOMFILEDVALUEis the value of the custom field):
[yith_render_barcode value = "CUSTOMFILEDVALUE" protocol = "CODE39"]
Можно ли включить значение настраиваемого поля в такой короткий код? Как это можно сделать?
Любая помощь будет оценена по достоинству.
в редакторе HTML ВНУТРИ ПЛАГИНА






Для этого вы можете встроить существующий шорткод в пользовательскую функцию шорткода. Следующий код представляет собой пример, основанный на других аналогичных функциональных ответах.
В этом коде я получаю идентификатор сообщения страниц, сообщений или пользовательских сообщений. Вы можете указать идентификатор сообщения, используя аргумент id шорткода, как в исходном шорткоде.
Код:
function custom_yith_render_barcode( $atts ) {
// Shortcode attributes
$atts = shortcode_atts( array(
'id' => '0', // Product ID
'hide_if_empty' => '1',
'value' => '',
'protocol' => 'EAN8',
), $atts, 'render_barcode' );
global $post;
if ( '0' === $atts['id'] && $post && is_object($post) )
$id = $post->ID;
elseif ( $atts['id'] > 0 )
$id = $atts['id'];
$hide = $atts['hide_if_empty'];
$value = get_post_meta( $id, $atts['value'], true ) ? get_post_meta( $id, $atts['value'], true ) : $atts['value'];
$protocol = $atts['protocol'];
return do_shortcode( "[yith_render_barcode id='$id' hide_if_empty='$hide' value='$value' protocol='$protocol']" );
}
add_shortcode('render_barcode', 'custom_yith_render_barcode');
Код находится в файле function.php вашей активной дочерней темы (или активной темы). Должно сработать.
ПРИМЕНЕНИЕ -
Ниже meta_key необходимо заменить на мета-ключ вашего настраиваемого поля. Все остальные аргументы YITH Shortcode неизменны и доступны. Только аргумент value используется для передачи настраиваемого поля мета-ключ, что позволяет получить значение настраиваемого поля во встроенном шорткоде YITH.
1) На странице Wordpress или в редакторе сообщений:
[render_barcode value = "meta_key" protocol = "CODE39"]
2) В PHP-коде:
echo do_shortcode( "[render_barcode value='meta_key' protocol='CODE39']" );
Это в редакторе внутреннего содержимого или в шаблоне?