WordPress快捷码不起作用

时间:2017-01-28 作者:anagam2017

您好,我已经创建了一个自定义计费字段发货跟踪代码,以便在后端将发货跟踪编号添加到订单中,并通过woocommerce订单电子邮件将此信息发送给客户,自动以html短代码的形式返回此值。但它不起作用。怎么了?请帮忙。

    /**
     * Add Shortcode 
     */
    function tracking_shortcode( ) {
       $order = new WC_Order( $order_id );
       $shipping_tracking_code = get_post_meta( $order->id, \'_shipping_tracking_code\', true );
       ob_start();
          return $shipping_tracking_code;
       return ob_get_clean();
    }
    add_shortcode( \'tracking_code\', \'tracking_shortcode\' );

1 个回复
SO网友:Fayaz

Point-1: 不清楚你在哪里$order_id 从…起我想是在Shortcode.

Point-2: 你不需要这么做。使用ob_* 返回函数Shortcode 替换内容,只需返回即可。

假设代码的其他部分正确,下面是可能的代码:

如果在主题的functions.php 文件:

/**
 * Add Shortcode 
 */
function tracking_shortcode( $attrs ) {
    $attrs = shortcode_atts( array(
        \'order_id\' => \'\'
    ), $attrs );
    if( empty( $attrs[\'order_id\'] ) ) return \'\';

    $order = new WC_Order( $attrs[\'order_id\'] );
    // I\'ve followed your code, but may be even the above line is not needed.
    // may be you can just use $attrs[\'order_id\'] directly to get tracking code
    return get_post_meta( $order->id, \'_shipping_tracking_code\', true );
}
add_shortcode( \'tracking_code\', \'tracking_shortcode\' );
如果使用插件实现短代码:

/**
 * Add Shortcode 
 */
function tracking_shortcode( $attrs ) {
    $attrs = shortcode_atts( array(
        \'order_id\' => \'\'
    ), $attrs );
    if( empty( $attrs[\'order_id\'] ) ) return \'\';

    $order = new WC_Order( $attrs[\'order_id\'] );
    return get_post_meta( $order->id, \'_shipping_tracking_code\', true );
}

/**
 * Initiate Shortcode 
 */
function tracking_shortcode_init()
{
    add_shortcode( \'tracking_code\', \'tracking_shortcode\' );
}
add_action(\'init\', \'tracking_shortcode_init\');
了解更多信息shortcode 从…起WordPress doc.

相关推荐

Namespaced shortcode?

我正在改造一个旧的WP站点,该站点有许多自定义的短代码,显然由于代码当前的组织方式,这些短代码在性能方面付出了代价。当然,我可以修复优化不好的代码,使用十几个短代码,并且一天就可以完成,但我想知道如何更好地组织它们。根据WordPress\'documentation, 建议将它们放在插件中并在上初始化init. 我们可以通过这样“命名”它们来减少这个钩子中的负载吗?[com.company shortcode attr=\"attr\" prop=\"prop\"] 有人尝试过这样的解决方案吗