在Woocommerce中使用自定义字段变量作为简码参数值

时间:2018-06-19 22:22:29

标签: php wordpress woocommerce barcode shortcode

在Woocommerce中,我使用的是YITH WooCommerce Barcodes and QR Codes插件,并且我想使用自定义字段作为此短代码中参数的值。这是related documentation

这就是我想要的(where CUSTOMFILEDVALUE is the value of the custom field)

[yith_render_barcode value="CUSTOMFILEDVALUE" protocol="CODE39"]

是否可以在此类短代码中包含自定义字段值?该怎么做?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

为此,您可以将现有的Shortcode嵌入自定义的Shortcode函数中。以下代码是基于其他类似功能答案的示例。

在此代码中,我获取页面,帖子或自定义帖子的帖子ID。您可以使用shortcode id参数指定帖子ID,就像在原始shortcode中一样。

代码:

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']" );